2012-11-01 41 views
-2

我有三個表:如何編寫SQL用於內部連接的三個表選擇

項目
ItemCategories
分類

如果ItemCategories包含:
ID
ITEMID
的categoryID

如何編寫SQL以獲取該項目的類別名稱?

到目前爲止,我有:

Select * 
from 
    items, 
    itemCategories, 
    categories 
where 
    item.id = itemCategories.itemID 
    and categories.id = itemCategories.categoryID 
+0

那麼現在你的查詢有什麼問題? –

+0

@JohnWoo - 我犯了一個錯字!我有item.id而不是items.id,但我仍然錯過了其他部分。 –

回答

3

這是您的逗號分隔表的JOIN形式加入。

select * 
    from items i 
    join itemCategories ic on i.id = ic.itemID 
    join categories c on c.id = ic.categoryID 

它通常也是一個非常不錯的主意

  1. 使用短別名爲表
  2. 列表中的所有,只有你的SELECT子句
    • 在需要的字段如圖所示,id列中都存在itemscategories這使得它不明確提及在前端應用程式消耗這個查詢的結果

爲了得到一個特定的類別名稱給出的項目名稱

select c.name 
    from items i 
    join itemCategories ic on i.id = ic.itemID 
    join categories c on c.id = ic.categoryID 
where i.name = 'itemname' 

注:這可以返回多個類別名稱,如果一個項目可以在多個類別。

+0

+1。通過約10次擊鍵和鼠標點擊來擊敗我。 :-) –

+0

舊的語法(*上面例子中的*)是否執行'outer join'? –

+0

它執行INNER JOIN,但它不是JOIN語法 – RichardTheKiwi