Requete MYSQL problématique
5 messages
• Page 1 sur 1
-

ludoanimation - WRInaute impliqué

- Messages: 770
- Inscription: 25 Juil 2003
Requete MYSQL problématique
Salut,
Je me prend la tete deuis un petit bout de temps avec une requete mysql
j'ai 2 tables :
la premiere :
la 2 eme
je voudrait avoir en resultat pour le user 111
j'ai essayé avec la requete suivante :
mais ca ne marche pas, ca ne me renvoie pas la ligne 3 ccccc nul nul nul
une idée ?
Je me prend la tete deuis un petit bout de temps avec une requete mysql
j'ai 2 tables :
la premiere :
- Code: Tout sélectionner
id lib
-- -------
1 aaaaa
2 bbbbb
3 ccccc
la 2 eme
- Code: Tout sélectionner
user val1 val2 val3 id1eretable
---- ---- ---- ---- -------------
111 100 50 0 1
111 0 0 10 2
222 20 20 20 1
je voudrait avoir en resultat pour le user 111
- Code: Tout sélectionner
1 aaaaa 100 50 0
2 bbbbb 0 0 10
3 ccccc nul nul nul
j'ai essayé avec la requete suivante :
- Code: Tout sélectionner
select d.id as id, d.lib as lib, b.val1 as val1, b.val2 as val2, b.val3 as val3
from table1 as d left join table2 as b on d.id = b.id
where (b.user='111')
mais ca ne marche pas, ca ne me renvoie pas la ligne 3 ccccc nul nul nul
une idée ?
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Requete MYSQL problématique
[/code]SELECT table1.id, table1.lib, table2.val1, table2.val2, table2.val3 FROM table1 LEFT JOIN table2 ON table1.id = table2.id1eretable WHERE table2.user = 111;[/code]
A noter que dans ton exemple, le dernier code, ton LEFT JOIN table2 AS b ON d.id = b.id, le b.id n'existe pas dans ton exemple, alors pas sûr que tu n'ais pas fait une faute de frappe
Sinon, ta requête me semble correcte.
NB: pour bien différencier opérateur, il faut mettre en majuscule tout ce qui est MySQL propre (SELECT / FROM / WHERE / ON / AS / LEFT JOIN ...) ça permet de lire le tout plus vite
A noter que dans ton exemple, le dernier code, ton LEFT JOIN table2 AS b ON d.id = b.id, le b.id n'existe pas dans ton exemple, alors pas sûr que tu n'ais pas fait une faute de frappe
Sinon, ta requête me semble correcte.
NB: pour bien différencier opérateur, il faut mettre en majuscule tout ce qui est MySQL propre (SELECT / FROM / WHERE / ON / AS / LEFT JOIN ...) ça permet de lire le tout plus vite
-

ludoanimation - WRInaute impliqué

- Messages: 770
- Inscription: 25 Juil 2003
Re: Requete MYSQL problématique
Merci,
Comme c'est un exemple, je me suis un peu emmelé les crayons, je remet la requete au propre :
mais elle ne me remonte que 2 lignes et toujours pas la 3eme
Comme c'est un exemple, je me suis un peu emmelé les crayons, je remet la requete au propre :
- Code: Tout sélectionner
SELECT d.id as id, d.lib as lib, b.val1 as val1, b.val2 as val2, b.val3 as val3
FROM table1 as d LEFT JOIN table2 as b ON d.id = b.id1eretable
WHERE (b.user='111')
mais elle ne me remonte que 2 lignes et toujours pas la 3eme
- Code: Tout sélectionner
3 ccccc nul nul nul
- jcaron
- WRInaute accro

- Messages: 2687
- Inscription: 13 Fév 2004
Re: Requete MYSQL problématique
C'est parce que ton LEFT JOIN est "à l'envers". LEFT JOIN renvoie toutes les lignes de la première table (qui correspondent aux critères du WHERE), avec en face les lignes de la deuxième table qui vont avec. Là, tu veux toutes les lignes de ta deuxième table, avec éventuellement les données de la première s'il y en a. Il faut donc que tu fasses un table2 left join table1, ou un table1 right join table2 (je conseille plutôt le premier, c'est plus "intuitif", surtout si tu as beaucoup de jointures).
Jacques.
Jacques.
-

ludoanimation - WRInaute impliqué

- Messages: 770
- Inscription: 25 Juil 2003
Re: Requete MYSQL problématique
Non, c'est bien tous les champs de la 1ere complété des valeurs trouvées dans la 2eme ou NULL.
Ca y est j'ai trouvé , en fait il faut que j'inclue ma clause dans le 0N et non dans le WHERE ce qui donne :
et la ca marche
(comme quoi la persévérence paye
)
Ca y est j'ai trouvé , en fait il faut que j'inclue ma clause dans le 0N et non dans le WHERE ce qui donne :
- Code: Tout sélectionner
SELECT d.id as id, d.lib as lib, b.val1 as val1, b.val2 as val2, b.val3 as val3
FROM table1 as d LEFT JOIN table2 as b ON ( d.id = b.id1eretable AND b.user='111' )
et la ca marche
5 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google - 20-09-2002
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB 3 - 27-03-2011
- Les différents systèmes de mise en cache des données - 16-08-2010
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
