數據庫實驗 嵌套與集合查詢
針對供應管理數據庫SPJ,進行各種嵌套與集合查詢:
代碼倉庫:https://github.com/SKPrimin/HomeWork/tree/main/SQLSever/嵌套與集合查詢
(1)查詢使用了“S001”供應商供應的零件的工程項目信息;
SELECT
*
FROM
J168
WHERE
JNO IN ( SELECT JNO FROM SPJ168 WHERE SNO = 'S001' )

(2)查詢供應零件“螺絲刀”的供應商信息;
SELECT
*
FROM
S168
WHERE
SNO IN ( SELECT SNO FROM SPJ168 WHERE PNO IN ( SELECT PNO FROM P168 WHERE PNAME = '螺絲刀' ) )

(3)查詢供應商“北京新天地”的所有客戶(工程項目)的信息;
SELECT
*
FROM
J168
WHERE
JNO IN ( SELECT JNO FROM SPJ168 WHERE SNO IN ( SELECT SNO FROM S168 WHERE SNAME = '北京新天地' ) )

(4)查詢供應了“J003”工程“P002”零件的供應商信息;
SELECT
*
FROM
S168
WHERE
SNO IN ( SELECT SNO FROM SPJ168 WHERE JNO = 'J003' AND PNO = 'P002' )

(5)查詢使用了“天津”供應商供應的“紅色”零件的工程項目信息;
SELECT
*
FROM
J168
WHERE
JNO IN (
SELECT
JNO
FROM
SPJ168
WHERE
SNO IN ( SELECT SNO FROM S168 WHERE CITY = '天津' )
AND PNO IN ( SELECT PNO FROM P168 WHERE COLOR = '紅色' )
)

(6)查詢沒有使用“天津”供應商供應的“紅色”零件的工程項目信息;
SELECT
*
FROM
J168
WHERE
JNO IN (
SELECT
JNO
FROM
SPJ168
WHERE
PNO != ALL (
SELECT
PNO
FROM
P168
WHERE
COLOR = '紅色'
AND PNO IN ( SELECT PNO FROM SPJ168 WHERE SNO IN ( SELECT SNO FROM S168 WHERE CITY = '天津' ) )
)
)

(7)查詢使用了“S002”供應的“螺母”零件的工程信息;
SELECT
*
FROM
J168
WHERE
JNO IN ( SELECT JNO FROM SPJ168 WHERE PNO IN ( SELECT PNO FROM P168 WHERE PNAME = '螺 母' ) AND SNO = 'S002' )

(8)查詢使用了 “螺母”零件的工程信息及相應供應商信息;
SELECT
J168.JNO,
JNAME,
J168.CITY,
S168.SNO,
SNAME,
S168.CITY,
STAT
FROM
J168,S168,SPJ168,P168
WHERE
SPJ168.SNO = S168.SNO AND SPJ168.JNO = J168.JNO AND SPJ168.PNO = P168.PNO AND PNAME = '螺 母'

(9)查詢給“長春一汽”項目供應零件的供應商信息和供應情況;
SELECT
S168.SNO,
SNAME,
S168.CITY,
P168.PNO,
PNAME,
COLOR,
WT
FROM
S168, SPJ168, J168, P168
WHERE
SPJ168.SNO = S168.SNO
AND SPJ168.JNO = J168.JNO
AND SPJ168.PNO = P168.PNO
AND JNAME = '長春一汽'

(10)查詢給“長春一汽”項目供應“螺母”零件最多的供應商信息和供應情況;
SELECT
S168.SNO,
SNAME,
S168.CITY,
P168.PNO,
PNAME,
COLOR,
WT
FROM
S168,
SPJ168,
J168,
P168
WHERE
SPJ168.SNO = S168.SNO
AND SPJ168.JNO = J168.JNO
AND SPJ168.PNO = P168.PNO
AND JNAME = '長春一汽'
AND WT IN ( SELECT MAX ( WT ) FROM P168 WHERE PNAME = '螺 母' )

(11)查詢使用了“螺母”或“螺絲刀”零件的工程項目信息;
SELECT
*
FROM
J168
WHERE
JNO IN ( SELECT JNO FROM SPJ168 WHERE PNO IN
( SELECT PNO FROM P168 WHERE PNAME = '螺 母'
UNION SELECT PNO FROM P168 WHERE PNAME = '螺絲刀' ) )

(12)查詢既使用了“螺母”又使用了“螺絲刀”零件的工程項目信息;
SELECT
*
FROM
J168
WHERE
JNO IN ( SELECT JNO FROM SPJ168 WHERE PNO IN
( SELECT PNO FROM P168 WHERE PNAME = '螺 母'
INTERSECT SELECT PNO FROM P168 WHERE PNAME = '螺絲刀' ) )

(13)查詢使用了“螺母”零件但沒有使用“螺絲刀”零件的工程項目信息;
SELECT
*
FROM
J168
WHERE
JNO IN ( SELECT JNO FROM SPJ168 WHERE PNO IN ( SELECT PNO FROM P168 WHERE PNAME = '螺 母' EXCEPT SELECT PNO FROM P168 WHERE PNAME = '螺絲刀' ) )

(14)查詢使用過所有供應商供應的零件的工程項目信息。 不存在任何零件沒使用
SELECT
*
FROM
J168
WHERE
NOT EXISTS (
SELECT
*
FROM
P168
WHERE
NOT EXISTS ( SELECT * FROM SPJ168 WHERE SPJ168.PNO = P168.PNO AND SPJ168.JNO = J168.JNO )
)
