来自4个表格的sql查询

问题描述:

我是初学者,我需要帮助!!!!!来自4个表格的sql查询

我有一个数据库:

  • 文章:id, name, description, id_pic, lang, date

  • 类别:id_cat, name_cat

  • 图片:id_pic, image

  • sub_cat:id_subcat, name_subcat, id_cat

,我需要选择name, desc, image, name_subcat这对

SELECT 
    a.id, a.name, a.desc, sc.name_subcat, p.picture, a.id_subcat 
FROM 
    article a, subcategory sc 
LEFT JOIN 
    pictures p ON a.id_pic = p.id_pic 
WHERE 
    a.id_subcat = sc.id_subcat 
    AND a.id_subcat IN (SELECT sc.id_subcat 
         FROM subcategory sc 
         WHERE id_cat = (SELECT id_cat 
             FROM category 
             WHERE name_cat = '???????')) 
+1

你在使用MSSQL 2008年,2005年MSSQL,MSSQL 2000或MySQL等? – Arion 2012-02-21 09:54:59

+0

你在找什么?什么标准? – 2012-02-21 10:01:35

试试这个:

SELECT a.id, a.name, a.desc, 
     sc.name_subcat, p.picture, a.id_subcat 
FROM article a, 
LEFT JOIN subcategory sc ON a.id_subcat = sc.id_subcat 
LEFT JOIN categories c ON sc.id_cat = c.id_cat 
LEFT JOIN pictures p  ON a.id_pic = p.id_pic 
WHERE c.name_cat = '??????' 

刚刚加入表subcategory与其他表,而不是where a.id_subcat = sc.id_subcat 。此连接将确保任何a.id_subcat位于subcategory,因此您可以摆脱where子句中的子查询。您还需要加入表。

您需要选择JOIN类型,无论是left还是INNER,这取决于您要从表格中选择的数据。

+0

我不确定他们的查询需要哪种连接类型:)但值得一提的是,在WHERE子句中使用'c.name_cat'会否定'categories c'上的外连接。 – Leigh 2012-02-21 19:24:41

您似乎缺少一些连接定义。

四个表:

文章

  • ID
  • 名称
  • 说明
  • ID_Pic
  • 日期

类别

  • id_cat
  • name_cat

子目录

  • id_subcat
  • name_subcat
  • id_cat

图片

  • id_pic
  • 图像,

我们需要看到的类别/子类别如何与文章。文章是否有与他们缺少关系的类别?

当你可以得到我这些答案我可以通过一个加入过程为你。

编辑:我看到缺少的字段。请忽略,上面的答案很好。

问候, 杰森

+0

文章还有一个字段:id_subcat – 2012-05-14 08:44:59