Je suis de l'utilisation de MySQL. Voici mon schéma:
Fournisseurs(sid: integer, sname: chaîne, chaîne d'adresse)
Pièces(pid: integer, pname: string, couleur: string)
Catalogue(sid: integer, pid: entier, de coûts: réel)
(les clés primaires sont en gras)
Je suis en train d'écrire une requête pour sélectionner toutes les pièces qui sont prises par au moins deux fournisseurs:
-- Find the pids of parts supplied by at least two different suppliers.
SELECT c1.pid -- select the pid
FROM Catalog AS c1 -- from the Catalog table
WHERE c1.pid IN ( -- where that pid is in the set:
SELECT c2.pid -- of pids
FROM Catalog AS c2 -- from catalog
WHERE c2.pid = c1.pid AND COUNT(c2.sid) >= 2 -- where there are at least two corresponding sids
);
Tout d'abord, je suis même aller sur ce la bonne manière?
Deuxièmement, j'obtiens cette erreur:
1111 - Valide l'utilisation de la fonction de groupe
Ce que je fais mal?
Mise à jour: Cela fonctionne: (je suis pratiquement certain)
SELECT pid
FROM Catalog
GROUP BY pid
HAVING COUNT(sid) > 2
Regarde comme je n'ai même pas besoin d'une sous-requête.