2013-01-10 42 views
-1

如果不將它加入到其他表中,是否可以執行WHERE語句? 例如:SQL'where statement'without joining

Table1(t1_id,name) 

Table2(t2_id, fk_t1_id, something) 

Table3(t3_id, fk_t2_id, blah) 

我想這樣做:

SELECT name, something 
FROM table1 
JOIN table2 ON t1_id = fk_t1_id 
WHERE blah = 'somestring' 

還是我不得不加入表3也爲WHERE語句來工作?

+1

沒有加入到表3,'WHERE'聲明不會對輸出有任何影響如果你沒有WHERE語句中的表1或表2的條件 – Chris

+0

你想完成什麼? –

+0

我是SQL新手,所以它只是一個理解問題 –

回答

1

你必須加入一個表3子。查詢解析器無法知道您需要該表中的某些內容或進行比較,除非您在查詢中包含該表。

SELECT name, something 
FROM table1 t1 
JOIN table2 t2 ON t1.t1_id = t2.fk_t1_id 
JOIN table3 t3 ON t2.t2_id = t3.fk_t2_id 
WHERE t3.blah = 'somestring' 
1

在您的示例中,您需要Table3才能進入blah列。另外兩張桌子不知道blah是什麼。

0

你可以在條件

SELECT name, something 
FROM table1 JOIN table2 ON t1_id = fk_t1_id 
WHERE blah IN (Select blah from table3) 
+0

我不確定你使用的是什麼數據庫,但是這個工作在MS SQL中。 –

0

半聯接會的工作,而不是內部連接上表3:

SELECT t1.name, t2.something 
FROM table1 t1 
JOIN table2 t2 ON t1.t1_id = t2.fk_t1_id 
WHERE t2.t2_id IN (SELECT fk_t2_id FROM table3 WHERE blah = 'something') 
相關問題