MySQL sous requete
Résolu/Fermé
koala.
Messages postés
279
Date d'inscription
mardi 24 juin 2008
Statut
Membre
Dernière intervention
6 mai 2011
-
9 nov. 2009 à 10:00
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 - 10 nov. 2009 à 09:33
koala. Messages postés 279 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 6 mai 2011 - 10 nov. 2009 à 09:33
A voir également:
- MySQL sous requete
- Mysql community server - Télécharger - Bases de données
- Mysql gratuit ou payant - Forum MySQL
- Le paquet « mysql-server » n'a pas de version susceptible d'être installée ✓ - Forum Debian
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
- Requête sql pix - Forum Python
5 réponses
koala.
Messages postés
279
Date d'inscription
mardi 24 juin 2008
Statut
Membre
Dernière intervention
6 mai 2011
38
9 nov. 2009 à 10:37
9 nov. 2009 à 10:37
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)
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)
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 389
9 nov. 2009 à 11:53
9 nov. 2009 à 11:53
Bonjour,
Le code suivant devrait te donner le résultat recherché pour les deux tables t1 et t2
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
Le code suivant devrait te donner le résultat recherché pour les deux tables t1 et t2
SELECT 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
koala.
Messages postés
279
Date d'inscription
mardi 24 juin 2008
Statut
Membre
Dernière intervention
6 mai 2011
38
9 nov. 2009 à 13:34
9 nov. 2009 à 13:34
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
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
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 389
9 nov. 2009 à 17:12
9 nov. 2009 à 17:12
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
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
koala.
Messages postés
279
Date d'inscription
mardi 24 juin 2008
Statut
Membre
Dernière intervention
6 mai 2011
38
10 nov. 2009 à 09:33
10 nov. 2009 à 09:33
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 ))
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 ))