double left join

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

double left join

Message le Mer Oct 12, 2005 19:56

Salut,
j'ai un problème assez complexe :
J'ai une table 't' avec des id uniques et 2 tables 't1' et 't2' liées à 't' mais qui peuvent être vides.

Je voudrais récupérer les 10 derniers enregistrement de 't' avec le nombre d'enregistrements de 't1' et 't2' qui sont liés.

Quand je fais :
CODE
SELECT t.id, count(t1.id) as nb1 FROM t LEFT JOIN t1 ON t1.id_table=t.id GROUP BY t.id ORDER BY t.id DESC LIMIT 0,10

J'arrive sans pb à récupérer les 10 derniers enregistrements de 't' et le nombre d'enregistrements de 't1' liés.

Par contre si je fais
CODE
SELECT t.id, count(t1.id) as nb1, count(t2.id) as nb2 FROM t LEFT JOIN t1 ON t1.id_table=t.id LEFT JOIN t2 ON t2.id_table=t.id GROUP BY t.id ORDER BY t.id DESC LIMIT 0,10

je récupère ds nb1 et nb2 le produit du nombre d'enregistrements liés.

Vous avez une idée ??

Merci

Sir Dipp
WRInaute passionné
WRInaute passionné
 
Messages: 1025
Inscription: 21 Juil 2003

Message le Mer Oct 12, 2005 20:06

Je pense que tu dois faire un group by t.id, t1.id, t2.id

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Mer Oct 12, 2005 22:23

Bein non.
Je le fait avec 2 requêtes pour l'instant, mais impossible avec une... :evil:


cyberdesign
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 22
Inscription: 4 Déc 2004

Message le Jeu Oct 13, 2005 8:06

Essaye avec:
SELECT t.id, count(t1.id) as nb1, count(t2.id) as nb2 FROM t1 RIGHT JOIN t ON t1.id_table=t.id LEFT JOIN t2 ON t2.id_table=t.id GROUP BY t.id ORDER BY t.id DESC LIMIT 0,10


chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

Message le Jeu Oct 13, 2005 8:20

Je comprend pas tout... ca sert a quoi de faire un count(id) et un group by id alors que id est unique...

nb1 et nb2 sont pas egal tout le temps a 1 ??

(dur de reflechir de bon matin...)


cyberdesign
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 22
Inscription: 4 Déc 2004

Message le Jeu Oct 13, 2005 8:28

Il peut avoir entre 0 et n enregistrements dans t1 pour lesquels il a id_table = id de t.
De même pour t2.


chava2b
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 263
Inscription: 5 Déc 2003

Message le Jeu Oct 13, 2005 8:41

ok cyberdesign, j'y avais pas pensé ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité