Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 15h33   #1
Invité de passage
 
Inscription : août 2009
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 8
Points : 1
Points : 1
Par défaut Jointure avec Foreign Key pouvant être null

Bonjour,

J'ai un soucis avec une requête SQL.

J'ai deux table:

Table Bleu:
Citation:
id_bleu NOT NULL
nom_bleu NOT NULL
Table rouge:
Citation:
id_rouge NOT NULL
nom_rouge NOT NULL
bleu1_id NULL
bleu2_id NULL

Je voudrais faire une requête du type:

Code :
1
2
3
4
SELECT r.nom_rouge, b1.nom_bleu, b2.nom_bleu
FROM rouge r, bleu b1, bleu b2
WHERE r.bleu1_id = b1.id_bleu
AND r.bleu2_id = b2.id_bleu

Actuellement, quand je fais cette requête, ça me retourne uniquement les lignes ayant un bleu1_id et bleu2_id NOT NULL.

Comment puis-je faire pour obtenir toutes les lignes, c'est-à-dire même lorsque les champs bleu1_id et bleu2_id sont NULL ?


Merci
neo932rcl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 15h48   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Bonjour,

Depuis 1992, les jointures s'écrivent avec l'opérateur JOIN...
Ce qui permet, entre autres, de faire des jointures externes (LEFT JOIN, RIGHT JOIN), ce qui devrait vous aider à résoudre votre problème.
Un peu de lecture pour y parvenir : les jointures SQL.

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h02   #3
Membre confirmé
 
Homme AbdelRaouf Gt
Développeur informatique
Inscription : décembre 2009
Messages : 203
Détails du profil
Informations personnelles :
Nom : Homme AbdelRaouf Gt
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2009
Messages : 203
Points : 238
Points : 238
Code :
1
2
3
SELECT r.nom_rouge, b1.nom_bleu
FROM rouge r JOIN bleu b1 ON r.bleu1_id = b1.id_bleu
JOIN bleu b2 ON r.bleu2_id = b2.id_bleu
aguetat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h13   #4
Invité de passage
 
Inscription : août 2009
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par ced Voir le message
Bonjour,

Depuis 1992, les jointures s'écrivent avec l'opérateur JOIN...
Ce qui permet, entre autres, de faire des jointures externes (LEFT JOIN, RIGHT JOIN), ce qui devrait vous aider à résoudre votre problème.
Un peu de lecture pour y parvenir : les jointures SQL.

ced
D'accord, donc le type de jointure que j'essayais n'est plus aux normes actuelles ?
neo932rcl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 16h16   #5
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Non, ce n'est pas ça.
La façon dont tu as écris ta requête (avec les tables séparées par des virgules), n'est plus dans les normes actuelles.

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h57.


 
 
 
 
Partenaires

Hébergement Web