Spero che questa sia la categoria corretta per postare problemi con database, ma non mi sembra di aver visto un forum apposito per i databae e l'sql. (spero di non sbagliarmi).
Ma veniamo al sodo...
Sto cercando di approfondire il linguaggio SQL e, facendo vari esperimenti, negli ultimi giorni mi sono imbattuto in un problema che non riesco a risolvere. Ve lo sottopongo sperando che qualcuno sappia darmi una mano.
Con un database mySQL voglio gestire un sistema di quiz a domande (organizzate per categorie).
In questo sistema ho principalmente due tabelle, una che si occupa di memorizzare tutte le categorie possibili ( chiamata "qz_categories" ) e un'altra che si occupa di memorizzare tutte le domande ( "qz_questions" ).
Vi riporto i campi più significativi di ogni tabella per una maggiore comprensione
______________________________________
qz_categories: id, name
qz_questions: id, text, category_id
______________________________________
dove qz_questions.category_id è un riferimento all'id della categoria a cui appartiene la specifica domanda.
Adesso veniamo al problema vero e proprio.
Vorrei creare una sorta di sommario che mostri i nomi di tutte le categorie e per ognuna di esse il numero di domande che appartengono a quella categoria.
Ho risolto parzialmente il problema con la seguente query:
codice:
SELECT qz_categories.id, qz_categories.name, COUNT(qz_questions.category_id) as total
FROM qz_questions, qz_categories
WHERE qz_questions.category_id = qz_categories.id
GROUP BY qz_categories.id
tale query mi da un risultato del genere
codice:
id name total
--------------------------------------
1 Sport 7
3 Scienze 3
4 Letteratura e Lingue 6
5 Musica e Arte 4
6 Storia e Geografia 5
7 Calcolo 8
Qual'è il problema?
Il problema è che esistono altre due categorie che non hanno alcuna domanda e quindi vorrei che apparissero con valore totale uguale a zero.
Come fare?!
Grazie a tutti in anticipo!