1

mysql で次の SQL クエリを実装するのに苦労しています。

私は見つけようとしています 緑色の部品のみを供給するすべてのサプライヤーについて、サプライヤーの名前と彼女が供給する部品の総数を出力してください.

私のSQLクエリは

SELECT S.sname , count(*)
FROM Suppliers S,Parts P,Catalog C
WHERE P.pid = C.pid AND C.sid = S.sid
GROUP BY S.sname , S.sid
HAVING EVERY (P.color = 'green')

mysqlでそれを実装する方法に関する提案は大歓迎です

4

2 に答える 2

2

NOT EXISTSコンストラクトを使用するのが最も簡単な方法だと思います:

SELECT s.sname, COUNT(*)
FROM   suppliers s
WHERE  NOT EXISTS (SELECT 1 
                   FROM   parts p
                   JOIN   catalog c ON p.pid = c.pid
                   WHERE  c.sid = s.side AND p.color != 'green')
于 2013-11-13T05:27:20.387 に答える
0

HAVING集計関数自体を使用して比較する場合に使用します。JOIN意図しない結果を招く可能性があるため、古い学校の複数テーブルのカンマ区切りも使用しないでください。

SELECT S.sname , count(*) as TotalParts
FROM Suppliers S
INNER JOIN Catalog C
ON S.sid = C.sid
INNER JOIN Parts P
ON P.pid = C.pid
WHERE   P.color = 'green'
GROUP BY S.sname
于 2013-11-13T05:29:00.753 に答える