2

Access にデータベースがあります (リンク テキストを取得できます)。私が走れば

SELECT DISTINCT Spl.Spl_No, Spl.Spl_Name
FROM Spl INNER JOIN Del 
   ON Spl.Spl_No = Del.Spl_No
WHERE Del.Item_Name <> 'Compass'

コンパスを一度も納入したことがないサプライヤの名前を提供します。ただし、おそらくサブクエリでこれを行うことができます。これまでのところ、私と他の何人かはそれを正しく理解できていません。

私は次のことに近づきました。さらに多くのサプライヤーを追加するまで、それは機能しなくなりました

SELECT SPL.SPL_Name
FROM SPL
LEFT JOIN DEL ON Del.SPL_No = SPL.SPL_No
WHERE (DEL.Item_Name<>"Compass") OR (DEL.Item_Name IS NULL)
GROUP BY SPL.SPL_Name
HAVING COUNT(DEL.SPL_No) = 0

質問:これはサブクエリで行うことができますか?

4

7 に答える 7

3

私は行くと思います:

SELECT SELECT Spl_No, Spl_Name
FROM Spl
WHERE Spl_No NOT IN 
  (SELECT Spl_No FROM Del
   WHERE Item_Name = 'Compass')
于 2009-01-12T14:35:39.927 に答える
2

このようなことを意味しますか?

SELECT SPL.SPL_Name
FROM SPL
WHERE NOT SPL.SPL_no IN 
 (SELECT SPL_no FROM DEL WHERE DEL.Item_Name = "Compass") 
于 2009-01-12T14:31:24.103 に答える
1

アクセスが存在する場合.....

SELECT SPL.SPL_Name FROM SPL WHERE NOT EXISTS (SELECT 1 FROM DEL WHERE Del.SPL_No = SPL.SPL_No AND (DEL.Item_Name='Compass') )

于 2009-01-12T14:31:41.370 に答える
1

あなたが英語で言うのとほぼ同じです。

「コンパスを納入していないサプライヤーを教えてください。」

Select [Stuff]
From Spl S
Where Not Exists
   (Select * From Del
    Where Spl_no = S.Spl_no 
       And Item_name  = 'Compass')

編集: 存在しない場合は、Count(*) = 0 を使用できます

Select [Stuff]
From Spl S
Where 
   (Select Count(*) From Del
    Where Spl_no = S.Spl_no 
       And Item_name  = 'Compass') = 0
于 2009-01-12T14:33:31.180 に答える
1
SELECT Spl_No
     , Spl_Name
  FROM Spl
 WHERE NOT EXISTS( SELECT *
                     FROM Del
                    WHERE Del.Spl_no = Spl.Spl_no
                      AND Item_name  = 'Compass' )
于 2009-01-12T14:30:43.340 に答える
0

コンパスを納入したことがないサプライヤー:

SELECT Spl.Spl_No, Spl.Spl_Name
FROM Spl
LEFT JOIN Del ON Del.Spl_No = Spl.Spl_No AND Del.Item_Name = 'Compass'
WHERE Del.Item_Name IS NULL

サブクエリを使用する:

SELECT Spl_No, Spl_Name
FROM Spl
WHERE Spl_No IN 
  (
    SELECT Spl_No
    FROM Del
    GROUP BY Spl_No, Item_Name
    WHERE Item_Name = 'Compass'
    HAVING COUNT(*) = 0
  )
于 2009-01-12T14:29:47.023 に答える
0

これはあなたが探しているものですか?

SELECT
   SPL.SPL_name
FROM
   SPL
WHERE
   SPL.SPL_No NOT IN
   (
      SELECT SPL_No FROM DEL WHERE DEL.Item_Name <> "Compass"
   )
于 2009-01-12T14:30:41.920 に答える