la COUNT() non va da sola nella SELECT *, la devi mettere esplicita. Tra l'altro non vedo GROUP BY, quindi non capisco come fai a contare
la COUNT() non va da sola nella SELECT *, la devi mettere esplicita. Tra l'altro non vedo GROUP BY, quindi non capisco come fai a contare
Hai ragione, infatti l' ultimo tentativo ha questo aspetto:
codice:SELECT * FROM allievo AL INNER JOIN( SELECT IND.id_sedeClienteNeca, SOC.ragioneSociale, IND.toponimo, IND.indirizzo, IND.civico, IND.cap, IND.comune, IND.provincia, SER.servizioAllievo, SER.permessi, SER.abilitato FROM societaclienteneca SOC INNER JOIN sedeclienteneca SEDE ON SEDE.id_societaClienteNeca= SOC.id_societaClienteNeca INNER JOIN indirizzosedeclienteneca IND ON IND.id_sedeClienteNeca=SEDE.id_sedeClienteNeca INNER JOIN servizi SER ON SER.id_sedeClienteNeca= SEDE.id_sedeClienteNeca WHERE SOC._Stato!= 'D' ) AS SCUOLE ON AL.id_sedeClienteNeca = SCUOLE.id_sedeClienteNeca GROUP BY SCUOLE.id_sedeClienteNeca HAVING COUNT(AL.id_allievo) > 5
e funziona?
poi, per essere più veloce, è la query scuole/allievi che deve essere interna, così scremi quelle con più di 5 allievi. quella esterna poi "decora" le scuole con altre info
prepara una query con sole due tabelle (alunni e quella delle scuole a cui fa riferimento alunni), mettici GROUP BY, COUNT e HAVING. Inizia da quel nucleo
Buongiorno,
intanto grazie,
la prima query seguendo i tuoi consigli sembra funzionare
Adesso basta fare una select esterna con tutti i campi che mi servono che fa Join con questa giusto?codice:SELECT SEDE.id_sedeCliente,COUNT(AL.id_allievo) FROM allievo AL INNER JOIN sedecliente SEDE ON SEDE.id_sedeCliente =AL.id_sedeCliente GROUP BY SEDE.id_sedeCliente HAVING COUNT(AL.id_allievo) > 5
Quindi credo sia una cosa del genere:
codice:SELECT SOC.ragioneSociale, IND.id_sedeClienteNeca, IND.toponimo, IND.indirizzo, IND.civico, IND.cap, IND.comune, IND.provincia, SER.servizioAllievo, SER.permessi, SER.abilitato, FROM societaclienteneca SOC INNER JOIN sedeclienteneca SEDE ON SEDE.id_societaClienteNeca= SOC.id_societaClienteNeca INNER JOIN indirizzosedeclienteneca IND ON IND.id_sedeClienteNeca=SEDE.id_sedeClienteNeca INNER JOIN servizi SER ON SER.id_sedeClienteNeca= SEDE.id_sedeClienteNeca INNER JOIN ( SELECT SEDE.id_sedeClienteNeca,COUNT(AL.id_allievo) FROM allievo AL INNER JOIN sedeclienteneca SEDE ON SEDE.id_sedeClienteNeca =AL.id_sedeClienteNeca GROUP BY SEDE.id_sedeClienteNeca HAVING COUNT(AL.id_allievo) > 5 ) AS SCUOLE ON IND.id_sedeClienteNeca= SCUOLE.id_sedeClienteNeca WHERE SOC._Stato!= 'D'
Ultima modifica di Maxilboss93; 10-02-2022 a 10:21
questa seconda funziona?
Sembra di sì ma per essere sicuro ho spezzato il problema, prima estraggo gli id_scuole con >5 allievi e li metto in un array, poi ciclo sull' array per la seconda query così sono sicuro che funzioni.
Grazie mille