2015-06-14 169 views
0

我有2個表:選擇表中的所有字段,其中在與ID另一個表的字段等於一個字符串

廣告:域IDABC

+----+---+-------+------+ 
| ID | A | B  | C | 
+----+---+-------+------+ 
| 1 | x | y  | z | 
| 2 | c | v  | b | 
| 3 | n | n  | m | 
+----+---+-------+------+ 

請求:字段IDAdIDStatus

+----+------+----------+ 
| ID | AdID | Status | 
+----+------+----------+ 
| 3 | 1 | pending | 
| 4 | 2 | approved | 
| 5 | 3 | pending | 
+----+------+----------+ 

ID(來自Ads)= AdID(來自Requests)。

現在,我想從Ads獲取所有記錄,其中AdID的(從RequestsStatus等於pendingAdId這裏將是IDAds

因此,上述表,結果我得到是ID 1和3,從廣告:

+----+---+---+---+ 
| ID | A | B | C | 
+----+---+---+---+ 
| 1 | x | y | z | 
| 3 | n | n | m | 
+----+---+---+---+ 

這是迄今爲止我已經得到了最接近的,但是這顯然不會工作,因爲它只能選擇一個行 - 而我需要選擇很多:

SELECT * FROM Ads WHERE ID = (SELECT AdID FROM Requests WHERE Status = 'pending') 

這可能沒有什麼意義 - 請詢問如果我沒有解釋得很好 - 我會幫助儘可能多的:)

回答

4

使用IN代替=

SELECT * 
FROM Ads 
WHERE ID IN (SELECT AdID FROM Requests WHERE Status = 'pending') 
+0

哇。我真笨!非常感謝!!!將盡快接受 –

+1

嘿 - 我的接受將會讓你超過10K! :) –

+2

@ᔕᖺᘎᕊ的確是!這是我的幸運帖子! :=) –

0

試試這個:

SELECT * FROM Ads A LEFT JOIN Requests R ON A.ID=R.AdID WHERE R.AdID='pending'; 
相關問題