-1

WHERE他のテーブルに結合せずにステートメントを実行することは可能ですか? 例えば:

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'

WHEREまたは、ステートメントが機能するために、table3 にも参加する必要がありますか?

4

5 に答える 5

1

table3 に参加する必要があります。クエリにテーブルを含めない限り、クエリ パーサーが、そのテーブルから何かが必要であることを認識したり、比較を行ったりする方法はありません。

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'
于 2013-01-10T19:25:07.663 に答える
1

あなたの例では、列Table3に到達するために必要です。blah他の 2 つのテーブルは何が何でblahあるかを知りません。

于 2013-01-10T19:24:19.087 に答える
0

はい、Table3 に参加する必要があります。

于 2013-01-10T19:24:25.690 に答える
0

where条件で部分文字列を実行できます

SELECT name, something 
FROM table1 JOIN table2 ON t1_id = fk_t1_id 
WHERE blah IN (Select blah from table3)
于 2013-01-10T19:24:46.077 に答える
0

table3 の内部結合ではなく、準結合が機能します。

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')
于 2013-01-10T20:35:10.637 に答える