2012-04-05 10 views
0

可能性の重複:
Writing an SQL query to SELECT item from the following tableトラブル

私はサプライヤー(SNAME)との部品番号(PNUM)の名前をリストしようとしています少なくとも2つの異なる部品の出荷をしたサプライヤ。私が試した何 http://i39.tinypic.com/o6w414.png

http://i44.tinypic.com/1zdcc9j.jpg

サプライヤー表:ここ

出荷表...私はで動作する必要がある2つのテーブルです

これは間違っています私はこれらの線に沿って何かを試しました...

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

は、COUNTなどの集計関数を使用するときは、GROUP BY句を使用する必要が

+2

なぜこの質問は「mysql」とタグ付けされていますか? nd 'アクセス'? –

+0

b/cこのSQLクエリを実装するためにアクセス権を使用しています。 – CSoverIT

+1

まず、件名にタグ情報を入れないでください。それは何のために設計されたタグです。 (あなたが 'SELECT'を使って、' MySQL'と 'SQL'タグを付けたという事実は' SQL'を冗長にし、余分なフレーズは質問をあいまいにします。)次に、テーブル情報を編集する必要があります。重要な情報のためのオフサイトリンクは、それらの外部サイトがオフラインであるか消えてしまうと、あなたの質問が無意味になることを意味します。また、あなたの質問は将来のユーザーには検索できません。ありがとう。 :) –

答えて

0
SELECT suppliers.sname, shipments.pnum 
FROM suppliers, shipments 
WHERE shipments.snum = suppliers.snum 
GROUP BY suppliers.sname 
HAVING count(shipments.pnum) >= 2 
+0

ありがとう!私は返事を感謝し、これは何らかの理由で動作しません:/それは私には完全な意味があります。 'sname'が集約関数の一部として含まれていないというこのクエリを実行しようとすると、アクセスにエラーが発生します。 – CSoverIT

+0

@CSoverITあなたは構文エラーが出ていますか? –

+0

@CSoverIT私は '>'の代わりに '> 'を使用しました。おそらくそれが原因です。確認してください:) –

0

ありがとうございます。集計とGROUP BYを使用する場合、HAVING CLAUSEはwhere句として機能します。

これは、あなたのサプライヤー名を取得する。これは、取引先のテーブルに戻ってテーブルに参加します> 1

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

数を持っているすべてのsnumsを取得します

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 
+0

名前だけが表示されています。数字だけです...サプライヤの名前をリンクする方法を理解しようとしています記載されている項目はありがとうございます。 – CSoverIT

+0

追加された下部クエリを試してください。結合が正しいと仮定すると、それは2つ以上の出荷を有するすべての供給者名を与えるでしょう。 –

0

私は知りませんアクセスについて(この質問はそのようにタグ付けされています)、これは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