salve ragazzi... cerco di spiegarvi il mio problema che vorrei risolvere in un unica query
le tabelle coinvolte sono 4:
codice:
tabella USER
id nome
1 pippo
2 pluto
tabella TOPIC
id forum_id titolo
1 1 aiuto in mysql
2 1 le stringhe in php
tabella POST
id topic_id data contenuto
1 1 01-gen-07 bla bla bla
2 1 01-gen-07 bla bla bla
3 2 02-gen-07 dasdasdasd
4 2 03-gen-07 adsdasdasd
tabella TOPIC_READ (rappresenta l'ultima volta che l'utente ha letto il topic)
topic_id user_id data
1 1 01-gen-07
io vorrei con una query estrarre oltre alle informazioni relative al topic (titolo) anche la data di ultima lettura (o null se non esiste) e la massima data relativa ai post collegati al topic corrente; ovviamente tutto questo deve essere fatto in relazione all'utente corrente
io sono a questo punto:
codice:
$user_id = utente loggato al forum
$forum_id = id del forum
SELECT t.*, MAX(p.data) AS data_ultimo_post, tr.data AS data_ultima_lettura
FROM topic AS t
LEFT JOIN post AS p ON t.id = p.topic_id
LEFT JOIN topic_read AS tr ON t.id = tr.topic_id
WHERE t.forum_id = $forum_id
AND tr.id_user = $user_id
GROUP BY t.id
ORDER BY MAX(p.d) DESC
il problema cosi facendo è che non mi riporta i topic che non sono stati ancora relazionati con l'utente tramite la table topic_read
ecco cosa mi aspetto di ricevere:
$forum_id = 1; $user_id = 1
codice:
topic.id topic.titolo titolo.id_forum data_ultimo_post data_ultima_lettura
1 aiuto in mysql 1 01-gen-07 01-gen-07
2 le stringhe in php 1 03-gen-07 null
mentre con:
$forum_id = 1; $user_id = 2
codice:
topic.id topic.titolo titolo.id_forum data_ultimo_post data_ultima_lettura
1 aiuto in mysql 1 01-gen-07 null
2 le stringhe in php 1 03-gen-07 null