[RESOLU][SQL] Pb de requete vide

Pb de requete vide [RESOLU][SQL] - SQL/NoSQL - Programmation

Marsh Posté le 24-10-2006 à 14:04:48    

Bonjour à toutes et à tous,
 
J'ai un petit pb avec une requete qui "m'oublit" des enregistrement.
 
J'ai ds ma base 3 tables, 1 client, 1badge et une table client_badge qui regroupe les clés primaires des 2 autres tables.  
Lorsque je fais une requete pour avoir ma liste des badges et le nom du client associé (si il y en a un), cela me retourne seulement les badges qui ont un client attribué, les autres n'apparaissent pas.  
 
Comment puis je faire pour que ma requete me sorte ts les badges, ceux avec des client et aussi ceux qui n'en n'ont pas.
 
Merci pour votre aide.


Message édité par leohnart le 25-10-2006 à 12:56:43

---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 14:04:48   

Reply

Marsh Posté le 24-10-2006 à 14:09:02    

LEFT JOIN

Reply

Marsh Posté le 24-10-2006 à 15:11:03    

ok je vais me renseigner sur ce "LEFT JOIN", merci de m'avoir mis sur la piste


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 15:14:48    

C'est avec quel SGBD ?

Reply

Marsh Posté le 24-10-2006 à 15:53:07    

bpoujol a écrit :

C'est avec quel SGBD ?


j'utilise access


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 15:56:43    

sur la jointure entre ta table de clés et celle des clients, remplace = par += (un truc du genre quoi :p)

Reply

Marsh Posté le 24-10-2006 à 15:58:24    

C'est bon j'ai compris le principe de left join, je vais compliquer le tout en voulant récuperer des données qui viennent de plus de 2 tables.  
 
A Priori quand on utilise le left join la syntaxe est :
 
SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.Employee_ID=Orders.Employee_ID

 
Ou est ce que je peux mettre mes autres tables???
Si vous avez des pistes, je suis bien sur preneur :)


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 16:02:35    

rocodido a écrit :

sur la jointure entre ta table de clés et celle des clients, remplace = par += (un truc du genre quoi :p)


J'ai essayé ca, ca ne me donne rien de plus, c'est la premiere fois que j'ecoute parler d'un truc pareil :ouch:


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 16:05:27    

ta requete me parait bizarre apres le from tu as pas mis Orders.. elle fonctionne ?  
 

Reply

Marsh Posté le 24-10-2006 à 16:06:29    

ca doit etre un raccourci de ton left join :) plus rapide à écrire

Reply

Marsh Posté le 24-10-2006 à 16:06:29   

Reply

Marsh Posté le 24-10-2006 à 16:08:27    

rocodido a écrit :

ta requete me parait bizarre apres le from tu as pas mis Orders.. elle fonctionne ?


Oui oui ca fonctionne, enfin si tu parles de la requete en italique, sinon pour la vrai je bute :/


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 16:12:41    

rocodido a écrit :

sur la jointure entre ta table de clés et celle des clients, remplace = par += (un truc du genre quoi :p)


Ca, c'est pour d'autres SGBD (oracle :??:)
En access, les jointures externes, c'est du LEFT/RIGHT JOIN


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 24-10-2006 à 16:13:27    

je ferais du genre (cle = cle primaire de chaque table)
 
select badge.badge, client.nom from badge, client, table_badge where badge.cle = table_badge.cle and table_badge.cle += client.cle
 
 
edit : bon faut la transformer pour Acces alors :(


Message édité par rocodido le 24-10-2006 à 16:14:35
Reply

Marsh Posté le 24-10-2006 à 16:23:41    

C'est mon pb effectivement... :(:/


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 16:24:07    

Bon, ben j'my colle !
 
Si tu veux tous les badges, ça donne :

Code :
  1. SELECT badge.code, employe.code
  2. FROM badge LEFT JOIN badge_employe
  3. ON badge.Code = badge_employe.code_badge


 
Là, ça donne tous les badges, et les éventuels employés possédant un badge (enfin, les codes).


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 24-10-2006 à 16:39:25    

kao98 a écrit :

Bon, ben j'my colle !
 
Si tu veux tous les badges, ça donne :

Code :
  1. SELECT badge.code, employe.code
  2. FROM badge LEFT JOIN badge_employe
  3. ON badge.Code = badge_employe.code_badge


 
Là, ça donne tous les badges, et les éventuels employés possédant un badge (enfin, les codes).


Merci pour ton aide, mais j'arrive deja a ca.
 
Le pb vient du fais que je dois recuperer des valeurs de champs qui viennent d'autres tables, j'ai encore 2 tables a rajouter, et je sais pas ou les mettre dans mon instruction sql.


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 24-10-2006 à 17:13:20    


SELECT badge.code, employe.code
FROM badge  
 
LEFT JOIN badge_employe
ON badge.Code = badge_employe.code_badge  
 
JOIN ...
ON ...
 
LEFT/RIGHT JOIN ...
ON ...
 
Tu met a la suite dans l'ordre de tes jointures

Reply

Marsh Posté le 24-10-2006 à 18:49:54    

bpoujol a écrit :

SELECT badge.code, employe.code
FROM badge  
 
LEFT JOIN badge_employe
ON badge.Code = badge_employe.code_badge  
 
JOIN ...
ON ...
 
LEFT/RIGHT JOIN ...
ON ...
 
Tu met a la suite dans l'ordre de tes jointures


ah ok j'essaye ca demain, je vous dirai si je suis arriver a mes fins. en tout cas merci a toutes et a tous  :jap:

Reply

Marsh Posté le 25-10-2006 à 10:38:12    

Alors voila ce que j'ai ecris :
 
SELECT badge.idbadge, badge.numserie, emp.Nom, emp.Prenom,badge_grp.nomgrp,badge_grp.horaire
FROM emp
RIGHT JOIN badge
ON emp.idbadge=badge.idbadge
JOIN badge_grp
ON badge.numgrp=badge_grp.numgrp

 
et là il me met erreur de syntaxe (operateur absent) dans l'expression :
 
emp.idbadge=badge.idbadge
JOIN badge_grp
ON badge.numgrp=badge_grp.numgrp

 
je suis a 2 doigts de me defenestrer  :sweat: (bon ok je suis au rdc mais kan meme....)


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 25-10-2006 à 10:45:44    

Code :
  1. SELECT badge.idbadge, badge.numserie, emp.Nom, emp.Prenom,badge_grp.nomgrp,badge_grp.horaire
  2. FROM emp
  3. RIGHT JOIN badge
  4. ON emp.idbadge=badge.idbadge
  5. INNER JOIN badge_grp
  6. ON badge.numgrp=badge_grp.numgrp


 
Le "INNER" ligne 5


Message édité par kao98 le 25-10-2006 à 10:46:05

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 25-10-2006 à 10:45:53    

remplace  
JOIN badge_grp  
par
INNER JOIN badge_grp  
...

Reply

Marsh Posté le 25-10-2006 à 10:58:30    

j'avais deja essayé mais c pareil :/


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le 25-10-2006 à 12:56:20    

yesssssssssssssssss!! g trouvé en fait fallait ecrire :
 
SELECT badge.idbadge, badge.numserie, emp.Nom, emp.Prenom,badge_grp.nomgrp,badge_grp.horaire  
FROM ((emp  
RIGHT JOIN badge  
ON emp.idbadge=badge.idbadge )
JOIN badge_grp  
ON badge.numgrp=badge_grp.numgrp)  
 
maudites parentheses :kaola:  


---------------
http://kciope.free.fr - retouche de photos
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed