プログラミングとSQLの新機能です。複数の条件の代わりに結合/副問い合わせを使用する際のルール、理由、不都合がありますか?このようなもの:SQL-結合と副問い合わせの代わりに複数の条件を使用する
select column
from table1
where table1.A=table2.B and
table2.C=table3.D and
table3.E=table4.F;
作業環境でこれを使用するのは問題ありませんか?
プログラミングとSQLの新機能です。複数の条件の代わりに結合/副問い合わせを使用する際のルール、理由、不都合がありますか?このようなもの:SQL-結合と副問い合わせの代わりに複数の条件を使用する
select column
from table1
where table1.A=table2.B and
table2.C=table3.D and
table3.E=table4.F;
作業環境でこれを使用するのは問題ありませんか?
他の人が暗示しているように、あなたがここで達成しようとしていることはひどくはっきりしていません。明確なのは、4つのテーブル内のデータを操作し、他のテーブルのデータに基づいてtable1からデータを選択したいということです。
そこであなたは、たとえば、複数のテーブル間で照会するためにJOINを使用する必要があります。
USE yourDatabaseName;
select t1.someColumn
,t1.someOtherColumn
,t2.someColumn
,t3.someColumn
,t4.someColumn
from table1 t1 JOIN
table2 t2 ON t1.someIDColumn = t2.someIDColumn JOIN
table3 t3 ON t3.someIDColumn = t2.someIDColumn JOIN
table4 t4 ON t4.someIDColumn = t3.someIDColumn WHERE
t1.targetColumn = t2.targetColumn AND
t2.targetColumn = t3.targetColumn AND
t3.targetColumn = t4.targetColumn;
をここでは、特定の固有のIDを使用する複数のSELECT
句で指定された複数のテーブルからフィールド、およびJOIN
句を持っていますテーブルを一緒に結合するためのいくつかの種類のフィールド。
targetColumn
の出現は、それぞれ異なる名前である可能性があることに注意してください。名前は同じである必要はありませんが、明示的な等価比較のためには同じデータ型でなければなりません。
someIDColumn
の列名も同じです。そのためには、比較のために両方のテーブルにあるカラムが必要です(ここでも、各テーブルでカラムの名前を異なるようにすることができます)。
通常、JOIN
句のON
部分の後に指定した列名は、テーブル全体で共有し、正確にこれらの外部キーとして使用されることを意図している固有のID列のいくつかの並べ替え、(すなわちuserID
またはsubscriptionID
)になります一種のリレーショナル・クエリー。
ボトムライン:
あなたはあなたの例で行ったようにあなたは、単にいくつかの方法でそれらを一緒に参加せずに、クエリで複数のテーブルを参照することができません。
SELECT
句で指定されたすべての列が最初JOIN
前という名前のテーブルに属していなければならないか、それはあなたがいずれかで列名を前に置く必要があり、その場合にはJOIN
句、内で指定されたテーブルのいずれかに属している必要がありますテーブル名、またはテーブル名の確立されたエイリアスです。ここでは各テーブル(t1
、t2
...など)に使用しました。
乾杯、
- =キャメロンあなたが求めているもの
本当にわかりません。両方のアプローチは、データのモデル化に応じて適切です。 –
'FROM'句は' table1'のみを参照し、他のテーブルは参照しないため、クエリは意味をなさないし、コンパイルもしません。機能するクエリを投稿できますか? –
expict join句を使用したくない場合は、間違ったform節があります。 – scaisEdge