supponiamo di avere due tabelle. articoli e commenti.sql - left join - count
quando sto selezionando le colonne dalla tabella articoli, voglio anche selezionare il numero di commenti su questo articolo nella stessa istruzione select ... (supponiamo il campo comune tra queste due tabelle è articleId)
come lo faccio? Posso farcela, ma non so se il mio modo sarebbe efficiente, quindi voglio imparare nel modo giusto.
Aggiungere il gruppo non è sempre la cosa migliore da fare. Vedo che le persone scrivono query con 100s (ok non 100s ma un LOTTO) di colonne nel loro gruppo in base alla clausola perché non sanno come utilizzare gli aggregati correttamente. Questo è il motivo per cui ho pubblicato una soluzione utilizzando una sottoquery. – JonH
@JonH: SQL Server (tra gli altri DB) simile non consente di elencare/restituire colonne che non sono racchiuse in funzioni aggregate (a meno che non si utilizzino funzioni analitiche) senza definirle all'interno della clausola 'GROUP BY'. Se si omette la clausola 'GROUP BY', ** si riceverà ** un errore su SQL Server in base a ciò che viene fornito. MySQL è l'unico DB che supporta tale funzionalità ed è non standard: http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html –
So che il mio punto molte persone non capiscono come funzionano i gruppi e gli aggregati. Ho visto persone raggruppare per 100 di colonne solo per ottenere quello che pensano potrebbe essere il risultato corretto. – JonH