Avrei necessità di fare una query che mi dia come risultato i titolo dei dischi di una band, il numero di recensioni presenti per ogni disco, il numero di commenti e il numero di utenti che li hanno inseriti tra i preferiti. Finora per ignoranza (tuttora non so se sia fattibile altrimenti) facevo una query per ottenre la lista dei dischi e per ogni disco una query per ottenere ogni risultato. Vorrei ottimizzare un po' la cosa e farlo attraverso una singola query.
La query che uso è questa:
SELECT d. * , count(c.id_disco ) AS totc, count( r.id_disco ) AS totr
FROM m_dischi d
LEFT JOIN m_d_commenti c ON c.id_disco = d.id
LEFT JOIN recensioni r ON r.id_disco = d.id
WHERE id_artista =1
GROUP BY disco
Finché non ci sono recensioni mi da i dati corretti ( X commenti, 0 recensioni) ma quando ci sono anche recensioni mi fa la somma di recensioni e commenti, visto che c'è il GROUP. C'è modo per ovviare a questo problema? Se non è possibile farlo con MySQL sarà possibile farlo con degli array in PHP, ma in questo momento preferirei puntare a una soluzione alla radice :D