Ciao a tutti.
Dovrei modificare una query correttamente funzionante che mi restituisce la lista dei capocannonieri di una certa squadra.
La query attuale è:
Questa query prende le tabelle giocatori e eventi (dove sono contenuti i gol, riconosciuti dal campo "tipo") e li mette in natural join per trovare i capocannonieri attraverso la selezione di count(giocatori.codg) e le clausole group by e order by. L'utilizzo della tabella partita serve esclusivamente per verificare i risultati delle partite nelle quali sono avvenuti gli eventi.codice:SELECT giocatori.codg, nome, foto, count(giocatori.codg) as gol, numero FROM giocatori NATURAL JOIN eventi, partite WHERE eventi.codp=partite.codp AND giocatori.cods = $cods AND eventi.tipo = 'G' AND (risultato = '1' OR risultato = 'X' OR risultato = '2') GROUP BY codg ORDER BY gol desc, nome asc
Adesso però mi serve che questa query mi restituisca anche i giocatori che hanno i gol pari a 0, cioè quelli che non hanno record nella tabella eventi. Purtroppo il natural join mi impedisce a priori di fare una cosa del genere, quindi ho creduto di dover ricorrere al left join (inserendo una clausola nello where che mi relazioni le tabelle giocatori e eventi come faceva il natural join), ma mi viene restituito un errore che non riesco a capire come risolvere.
La query modificata è
L'errore ècodice:SELECT giocatori.codg, nome, foto, count(giocatori.codg) as gol, numero FROM giocatori LEFT JOIN eventi, partite WHERE eventi.codp=partite.codp AND giocatori.cods = $cods AND eventi.tipo = 'G' AND (risultato = '1' OR risultato = 'X' OR risultato = '2') AND giocatori.codg=eventi.codg GROUP BY codg ORDER BY gol desc, nome asc
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'where eventi.codp=partite.codp and giocatori.cods = 445 and eve
Qualcuno mi sa aiutare?

Rispondi quotando