2010-09-30 30 views
1

我正在使用phpMyAdmin來查詢數據庫。SQL新手,我如何使用TableA上的SELECT調用的結果來針對TableB進行SELECT?

我想選擇TableA中的所有條目,其中Date ='2010-08-01'。然後,我想使用結果表中項目的SubID屬性來查找TableB中具有匹配SubID的所有條目。我知道我必須在某處使用JOIN,但我不確定如何或在哪裏。

我搜索了StackOverflow,似乎有很多類似的問題,但沒有一個像我的基本(又名小白)。我無法弄清楚他們在說什麼。爲了讓您瞭解我所知道的知識,我今天開始學習SQL,並閱讀了關於SQL的W3學校教程。我覺得答案會非常明顯,我會因爲沒有搞清楚而自責。

非常感謝。

回答

2

一個很好的參考http://www.w3schools.com/sql

你需要的是:

SELECT * 
FROM TableA a 
JOIN TableB b on a.SubID = b.SubID 
WHERE a.Date = '2010-08-01' 

編輯按其他職位 - 一個JOIN可能是更高效,但是如果你有TableB中的多個記錄與SubID相同,您將從TableA返回重複記錄。

1

你實際上不需要一個JOIN - 只是一個子查詢來過濾TableB。像這樣,例如:

SELECT SubID 
FROM TableB 
WHERE SubID IN 
    (SELECT SubID 
    FROM TableA 
    WHERE Date='2010-08-01'); 

這就是說,你可以使用聯接,按@ CK的答案。

1

如果您正在尋找加入,ck's post提供了一個簡單的解決方案。

接近這將是使用子查詢的另一種方式(這在閱讀您的問題的標題來到我的腦海):

SELECT * FROM TableB WHERE SubID IN 
    (SELECT SubID FROM TableA WHERE Date = '2010-08-01') 

SELECT查詢(從TableB選擇)選擇了行,其SubID s爲發現在內部SELECT查詢的結果集中(從TableA中選擇)。因此,例如,如果TableA變成了五行,這些SubID S:

然後行將從TableB選擇其SubID s是IN (8, 11, 12, 27, 35)