2013-03-30 46 views
0

值這是一個非常基本的問題,我很抱歉,如果已經有人問過這個問題..Mysql的選擇查詢基於不同的表

我有所謂的「項目」主表。它具有所有項目(S)相關的信息,如目錄,說明,有效性,價格等

我還有另一個表,稱爲'activelisting'只有一列'目錄'。

現在我想根據'目錄'在'activelisting'表中存在'item'表中的'catalog','description'和'avail'。 或另一個詞從'activelisting'表中的所有內容以及'item'表中的匹配記錄。

我已經研究了很多,但無法找到工作查詢。我使用下面的查詢..

SELECT t1.catalog, t1.description, t1.avail 
FROM item t1 
LEFT JOIN activelisting t2 
ON t1.`Catalog` = t2.`Catalog`; 

任何幫助,將不勝感激......

+0

你看起來非常接近,但我認爲你正在尋找一個'INNER JOIN'。 – FrankieTheKneeMan

+0

假設活動列表中的行是唯一的。他們? – FrankieTheKneeMan

+1

你嘗試過'INNER JOIN'而不是'LEFT JOIN'嗎? – ecampver

回答

0

嘗試使用的INNER JOIN代替LEFT JOININNER JOIN將確保所加入的值存在於兩個表中。

SELECT i.catalog, i.description, i.avail 
FROM item i 
INNER JOIN activelisting a ON i.catalog = a.catalog 

LEFT JOIN將返回所有導致左表,item如果沒有在activelisting一排相同catalog那麼它將只返回NULL這些列。您目前沒有選擇潛在的NULL列,所以您當前的結果基本上應該是item中的所有條目。

0
SELECT t1.catalog, t1.description, t1.avail FROM item t1 RIGHT OUTER JOIN activelisting t2 ON t1.Catalog = t2.Catalog; 

OR

SELECT t1.catalog, t1.description, t1.avail FROM activelisting t2 LEFT OUTER JOIN item t1 ON t1.Catalog = t2.Catalog; 

第一個良好的可視化工具。僅僅因爲您從活動列表中選取所有目錄並從項目表中匹配目錄,您必須使用外部聯接。

第二個爲更好的理解。