0

重複の可能性:
次の表の SELECT 項目への SQL クエリの書き込み

少なくとも 2 つの異なる部品を出荷したサプライヤの名前 (sname) と部品番号 (pnum) をリストしようとしています。

これが私が扱う必要がある2つのテーブルです...

出荷表: http://i44.tinypic.com/1zdcc9j.jpg

サプライヤー表: http://i39.tinypic.com/o6w414.png

私が試したこと:

これは正しくありません。これらの線に沿って何かを試しました...

SELECT snum 
FROM (SELECT snum, count(snum) AS nbr FROM Shipments ) 
WHERE nbr > 1;

ありがとうございました

4

3 に答える 3

0
SELECT suppliers.sname, shipments.pnum
FROM suppliers, shipments
WHERE shipments.snum = suppliers.snum
GROUP BY suppliers.sname
HAVING count(shipments.pnum) >= 2
于 2012-04-05T02:30:59.037 に答える
0

COUNT などの集計関数を使用する場合は、GROUP BY 句を使用する必要があります。Aggregates と GROUP BY を使用する場合、HAVING CLAUSE は where 句として機能します。

これにより、カウントが1より大きいすべてのsnumが取得されます

SELECT snum
FROM
(
    SELECT snum, count(snum) AS nbr
    FROM Shipiments
    GROUP BY snum
    HAVING COUNT(snum) > 1
) AS T

これにより、テーブルがサプライヤー テーブルに結合され、サプライヤー名が取得されます。

SELECT DISTINCT Suppliers.sname
FROM
(
    SELECT snum, count(snum) AS nbr
    FROM Shipiments
    GROUP BY snum
    HAVING COUNT(snum) > 1
) AS T INNER JOIN Suppliers ON Suppliers.snum = T.snum
于 2012-04-05T02:31:23.047 に答える
0

Access についてはわかりませんが (この質問はそのようにタグ付けされているため)、これは MySQL で機能するはずです:

select su.sname from suppliers su
join shipments sh on su.snum = sh.snum
group by su.sname
having count(distinct su.pnum) >= 2
于 2012-04-05T02:34:58.110 に答える