2017-09-17 3 views
-1

プログラミングとSQLの新機能です。複数の条件の代わりに結合/副問い合わせを使用する際のルール、理由、不都合がありますか?このようなもの:SQL-結合と副問い合わせの代わりに複数の条件を使用する

select column 
from table1 
where table1.A=table2.B and 
table2.C=table3.D and 
table3.E=table4.F; 

作業環境でこれを使用するのは問題ありませんか?

+0

本当にわかりません。両方のアプローチは、データのモデル化に応じて適切です。 –

+3

'FROM'句は' table1'のみを参照し、他のテーブルは参照しないため、クエリは意味をなさないし、コンパイルもしません。機能するクエリを投稿できますか? –

+0

expict join句を使用したくない場合は、間違ったform節があります。 – scaisEdge

答えて

0

他の人が暗示しているように、あなたがここで達成しようとしていることはひどくはっきりしていません。明確なのは、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句、内で指定されたテーブルのいずれかに属している必要がありますテーブル名、またはテーブル名の確立されたエイリアスです。ここでは各テーブル(t1t2 ...など)に使用しました。

乾杯、
- =キャメロンあなたが求めているもの

関連する問題