PDA

View Full Version : [PHP e mySQL] Problema con JOIN tra tre tabelle


Dani88
09-05-2011, 15:25
Ciao a tutti :)
avrei bisogno di un aiuto con php e mysql e join tra due tabelle che mi gestiscono la gallery di un sito.
In pratica ho:
- tabella utenti, con chiave username
- tabella foto, con campo username
- tabella video, con campo username

Nella pagina di amministrazione mi serve poter fare un riepilogo con una "tabella" in cui compare nome utente e quante foto e video ha caricato, da li poi vado su un'altra pagina (che ho già fatto) con la descrizione dei file.
Il problema con cui mi sto picchiando è appunto il join tra le 3 tabelle perchè ovviamente un utente può aver caricato video ma non foto e viceversa e se faccio un join sulle 3 con condizione di username uguale cerca solo le righe in cui c'è lo stesso user in tutte e 3 le tabelle.
Come posso fare? non riesco a capire... :(

Palla_95
09-05-2011, 15:39
prova a usare questa query

SELECT utenti.*, foto.*, video.*
FROM utenti INNER JOIN foto ON utenti.username = foto.username
INNER JOIN video ON utenti.username = video.username
WHERE utenti.id = '$id'

usando mysql_num_rows
p.s.: ho aggiunto la clausola WHERE immaginando che utilizzi anche l'id per gli utenti

Kenger
09-05-2011, 21:28
Così?

SELECT *
FROM utenti u, foto f, video v
WHERE u.username = f.username
OR u.username = v.username
ORDER BY u.username

MarcioPG
09-05-2011, 23:22
Se ti serve il numero di foto e video penso dovrebbe essere:

select
utenti.id,
utenti.name,
count(foto.id),
count(video.id)
from
utenti
left join
foto
on foto.utente_id = utenti.id
left join
video
on video.utente_id = utenti.id
group by
utenti.id,
utenti.name

O, al limite se non vuoi elencare tutti i campi della tabella utente nella SELECT e poi nella GROUP BY:

select
utenti.*,
foto_utente.qty,
video_utente.qty
from
utenti

left join
(select utente_id,count(id) qty from foto group by utente_id) foto_utente
on foto_utente.utente_id = utenti.id

left join
(select utente_id,count(id) qty from video group by utente_id) video_utente
on video_utente.utente_id = utenti.id