ネストされたSQL文ではありませんexisits分割文言を得るために2分

**

例:データベース・システムの導入第二章放課後の運動王シャンバージョン

**

探しているが、少なくともサプライヤーとS1は、プロジェクト番号JNOのすべての部品を供給し


、このタイトルを得るために最初だけSPJテーブルを含むテーブル、および簡単にこの問題を解決するためにその利用区分を参照してください。

分割は、多層ネストされたループ、悪いマスターに関し存在することができません。私は、SQL文をデータベース部門を書くために、短い答えのショートカットをご紹介します。

1.最初の結果は、被除数と除数を照会する必要があります。

除数SNO =「S1」がPNOを投影したときに、この例では、クエリの結果は、JNO質問、SPJテーブル配当をPNO、JNP 2外に投影されています。
我々は通常、これを行います!
1.1最も外側にあるクエリ結果
1.2中間層の除数に置く(プラス除数の選択条件)
1.3最内層上に置き、配当条件が最内層に導入される

与えることを書き込み、SQLステートメント

select Distinct JNO
From SPJ SPJX
where not exists
(	select * 
	from SPJ SPJY
	where SPJY.SNO='S1' AND not exists(
	select *
	from SPJ SPJZ
	where SPJZ.JNO = SPJX.JNO AND SPJZ.PNO = SPJY.PNO
	) 
)

次の手順の詳細な分析:

-1配当の結果除数チェックアウトクリアするために
、我々はSNO PNO =「S1」のときJNO SPJテーブル配当が突出しているPNO、JNO 2つの除数の外に投影されていることを確認する必要が疑問を-
-私たちは、除数を置きます最初は存在し、それに加えて必要な条件(その選択= SNO「S1を」の条件)ではないの後に
-私たちは第二の配当の後に置かない存在
-その後、最内層と二つの外側のクエリのクエリどこ関連付けられた属性がステートメントにつながる見つけるために

-2。重要なステップは、アソシエーションとその外側の層の最内層との間にどのような関係を見つけることですか?
-最も外側の層と最も内側の間の接続がJNO、最外層と内層接続は二回PNOを必要頼っていることが分かります。
二つの特性JNO、PNOの配当ので。除数は、SNO =「S1」を選択PNO属性
PNOに内層と除数が中間層、JNOが外側JNOに関連付けられた属性除数に関連付けられた属性に配当。
-3。それからどのように見て?
-ファーストルック除数、除数が上映されPNOは、列の属性。直接内層= SPJZ.PNO書き込みSPJY.PN0中
-配当金、配当金のチェックアウト結果JNOを見ています。内層= SPJX.JNO SPJY.JNOに直接書かれた
-そして、分割SQLステートメントを完了するために、選択基準の除数を追加

おすすめ

転載: blog.csdn.net/weixin_43752167/article/details/90676465