2012-02-21 172 views
1

我是初學者,我需要幫助!!!!!來自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

回答

0

試試這個:

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

0

您似乎缺少一些連接定義。

四個表:

文章

  • ID
  • 名稱
  • 說明
  • ID_Pic
  • 日期

類別

  • id_cat
  • name_cat

子目錄

  • id_subcat
  • name_subcat
  • id_cat

圖片

  • id_pic
  • 圖像,

我們需要看到的類別/子類別如何與文章。文章是否有與他們缺少關係的類別?

當你可以得到我這些答案我可以通過一個加入過程爲你。

編輯:我看到缺少的字段。請忽略,上面的答案很好。

問候, 傑森

+0

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