MySQL sous requete
Résolu
koala.
Messages postés
294
Statut
Membre
-
koala. Messages postés 294 Statut Membre -
koala. Messages postés 294 Statut Membre -
Bonjour,
J'ai trois table dans une requête mais deux me pose problème
t1
id
1 - -
2 - -
3 - -
t2
id
1 12/05/2008
1 05/06/2007
1 12/11/2009
2 04/12/2008
2 06/11/2006
Je voudrai que la requête retourne pour chaque id la date la plus récente :
1 12/11/2009
2 04/12/2008
Merci de votre aide.
J'ai trois table dans une requête mais deux me pose problème
t1
id
1 - -
2 - -
3 - -
t2
id
1 12/05/2008
1 05/06/2007
1 12/11/2009
2 04/12/2008
2 06/11/2006
Je voudrai que la requête retourne pour chaque id la date la plus récente :
1 12/11/2009
2 04/12/2008
Merci de votre aide.
5 réponses
-
Voilà, ce que j'ai fait mais qui ne fonctionne pas :
SELECT *
FROM t3
LEFT JOIN t1 (t1.champ_quelconque = t2.champ_quelconque AND t1.champ_quelconque_autre=3 AND t1.champ_quelconque_autre=6)
WHERE t1.id=(
SELECT id,champ, MAX(date)
FROM `t2`
WHERE t2.id= D.id) -
Bonjour,
Le code suivant devrait te donner le résultat recherché pour les deux tables t1 et t2SELECT distinct id from t1 , (select max(date) from t2 where t2.id = t1.id)
Il ne te reste plus qu'a faire la jointure avec t3.
Juste encore deux petites remarques dans ton code
- la jointure entre t3 et t1 devrait être du genre t3.champ_quelconque = t1.champ_quelconque et non t2
- comment le t1.champ_quelconque_autre peut-il être égal à 3 et à 6 en même temps, tu veux peut-être sélectionné les enregistrements ayant ce champ égal à 3 OU à 6, alors remplace ton AND par OR.
A plus -
Finalement, j'avais trouvé
SELECT *
FROM t3
LEFT JOIN t1 (t1.champ_quelconque = t2.champ_quelconque AND t1.champ_quelconque_autre=3 AND t1.champ_quelconque_autre=6)
LEFT JOIN t2 (t1.champ_quelconque = t2.champ_quelconque)
WHERE t1.id=(MAX(date)
FROM `t2`
WHERE t2.id= D.id)
maintenant nom souci c'est que j'ai des ligne nul avec ma requête simple et je voudrai quelles apparaissent aussi avec la sous-requête -
Bonjour koala,
Je ne comprends pas ton ordre sql, tu ne sélectionnes que des données de t3 , aucune de t1 ou t2. Peut-tu m'indiquer les colonnes de t3, quelques exemples de données de t3 et le résultat que tu souhaites obtenir, cela sera alors peut-être un peu plus clair pour moi.
A plus -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Finalement, j'avais réussi à faire ce que je voulais :
SELECT DISTINCT (t1.ID), t1.champ1 , t3.ID, t3.champ2 , t2.DATE, t2.champ3
FROM `t3`
LEFT JOIN t1 ON ( t1.IDr = t3.IDr
AND t1.ID =6
AND t1.ID2=5 )
LEFT JOIN t2 ON (t3.id4 = t2.id4 AND
t2.DATE = (SELECT MAX( DATE ) FROM t2 WHEREt3.id4 = t2.id4 ))