[SQL] problème sur une requête

Fermé
apple31 Messages postés 25 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 7 septembre 2007 - 27 oct. 2006 à 10:37
apple31 Messages postés 25 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 7 septembre 2007 - 27 oct. 2006 à 14:32
Bonjour,

voila j'ai un petit probleme avec une requête.

voila un exemple :

J'ai deux tables A et B

la table A est composée de :
id ( son identifiant)
nom (champ texte)
b_id (identifiant de la table B en clé étrangère)

la table B est composée de :
id ( son identifiant)
text (champ texte)

voila la requete que je fais :

select A.id, A.NOM, B.TEXT
from A, B
where A.B_id = B.id

le probleme c'est que ça me ramène que les lignes de A qui ont le champ B_ID rempli avec un ID de B.

Moi ce que je souhaiterai c'est que j'ai toutes les lignes de A meme celles ou le champ B_id est null.

Je sais pas si je me fais bien comprendre.

Je ne sais pas comment faire. Il me semblait qu'il y avait un truc du style (+) qu'on pouvait utiliser d'un coté ou l'autre de l'égalité pour justement arriver à ce résultat mais je n'y arrive pas.

Petite précision, j'utilise MySQL.

Mon exemple est simpliste mais ma vrai requete utilise 4 ou 5 tables.

merci par avance pour vos réponses

Apple

PS : je n'ai pas trouver de titre court plus parlant ...

4 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
27 oct. 2006 à 11:03
Je comprends pas trop ton probleme... si tu souhaite avoir toute les lignes de A, tu fais un :
select * from A

Et puis n'en parlons plus.

Tu peux reformuler ta question un peu mieux ?
A moins que tu ne veuille prendre que les lignes de A qui ont un identifiant de b null ou égal à une valeure dans B, et dans ce cas je crois pas que ce soit faisable du fait que tu fais une selection sur l'identifiant en question, donc si tu permet qu'il soit null, apres c'est la fete du slip dans ta base de donnée, non ?
0
deus Messages postés 93 Date d'inscription mercredi 20 novembre 2002 Statut Membre Dernière intervention 24 mai 2007 91
27 oct. 2006 à 11:09
Salut,

Je ne sais pas si ca existe en mySQl mais regarde du côté du Left Outer Join

ex:
SELECT a.*, b.*
FROM a
LEFT OUTER JOIN b
ON a.id = b.id


même si la table B est vide pour un "id" il te retournera ce qui se trouve dans la table A pour ce même "id".

0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
27 oct. 2006 à 11:54
C'était donc ca...

Merci Deus :)
0
apple31 Messages postés 25 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 7 septembre 2007 2
27 oct. 2006 à 14:32
merci pour ta réponse je vais tester ...

++
Apple
0