Sto usando MySQL. Qui è il mio schema:MySQL: uso non valido della funzione di gruppo
Fornitori (sid: interi, sname: stringa, stringa di indirizzo)
Parti (PID: interi, pname: stringa, colore: String)
catalogo (sid: integer, pid: integer, costo: vero e proprio)
(le chiavi primarie sono in grassetto)
sono t rying di scrivere una query per selezionare tutte le parti che sono fatti da almeno due fornitori:
-- 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
);
Prima di tutto, sono io andando anche su questo il modo giusto?
In secondo luogo, ottengo questo errore:
1111 - Invalid use of group function
Che cosa sto facendo di sbagliato?
Quindi "HAVING" conta prima i filtri, giusto? –
Anche se si utilizza GROUP BY, HAVING dovrebbe essere dopo GROUP BY – Viacheslav
Inoltre, GROUP BY deve essere prima di HAVING .... Avrebbe dovuto leggere il commento di Bandolero: D – Andrew