... avevo gridato vittoria troppo presto
la query sopra non sò il perchè ma mi estrae sempre e solo un unico record.
Riporto questi dati sperando di trovare un'anima pia che mi dia una mano
... sono giorni che sto smanettando con una query e sto impazzendo con le join.
Ho un db così strutturato:
Le relazioni:codice:CREATE TABLE IF NOT EXISTS `articoli` ( `id_articolo` int(11) NOT NULL AUTO_INCREMENT, `id_capitolo` int(11) NOT NULL, `id_utente` int(11) NOT NULL, `sub_titolo` varchar(255) NOT NULL, `testo` text NOT NULL, PRIMARY KEY (`id_articolo`) ) CREATE TABLE IF NOT EXISTS `capitoli` ( `id_capitolo` int(11) NOT NULL AUTO_INCREMENT, `titolo` varchar(255) NOT NULL, PRIMARY KEY (`id_capitolo`) ) CREATE TABLE IF NOT EXISTS `argomenti_articolo` ( `id_rel_arg` int(11) NOT NULL AUTO_INCREMENT, `id_argomento` int(11) NOT NULL, `id_articolo` int(11) NOT NULL, PRIMARY KEY (`id_rel_arg`) ) CREATE TABLE IF NOT EXISTS `argomenti` ( `id_argomento` int(11) NOT NULL AUTO_INCREMENT, `argomento` varchar(40) NOT NULL DEFAULT 'altro', PRIMARY KEY (`id_argomento`) ) CREATE TABLE IF NOT EXISTS `utenti` ( `id_user` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(60) NOT NULL, PRIMARY KEY (`id_user`) ) CREATE TABLE IF NOT EXISTS `commenti` ( `id_commento` int(11) NOT NULL AUTO_INCREMENT, `id_articolo` int(11) NOT NULL, PRIMARY KEY (`id_commento`) )
articoli-capitoli è molti a 1 (ogni articolo è associato ad uno specifico capitolo)
articoli-argomenti è molti a molti (ogni articolo può avere diversi argomenti)
articoli-commenti è 1 a molti (ogni articolo può avere più commenti)
articoli-utenti è molti a 1 (ogni articolo ha uno specifico utente/autore)
Io devo estrarre per ogni articolo:
- il nome del capitolo associato
- l'autore (NB: è unico)
- il numero di commenti
- la lista degli argomenti e i relativi id: essendo una relazione molti a molti quindi viene fuori GROUP_CONCAT()...
Per i primi 3 punti ho risolto così
Ora come posso estrarre anche gli id_argomento e argomento?codice:SELECT DISTINCT capitoli.titolo AS capitolo, articoli.sub_titolo AS subtitolo, articoli.testo AS testo, utenti.nome AS autore, (SELECT COUNT(commenti.id_commento) FROM commenti WHERE commenti.id_articolo=articoli.id_articolo) AS numero_commenti FROM articoli INNER JOIN utenti ON (utenti.id_user=articoli.id_utente) INNER JOIN capitoli ON (capitoli.id_capitolo=articoli.id_capitolo) LEFT OUTER JOIN commenti ON (commenti.id_articolo=articoli.id_articolo)
Essendo una relazione molti a molti devo concatenare il tutto in una stringa con GROUP_CONCAT() ma nn ci riesco in nessun modo.
Voglio evitare di fare 2 query...

Rispondi quotando