Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 19/02/2011, 23h01   #1
Invité régulier
 
Femme
Étudiant
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 7
Points : 7
Par défaut SELECT avec jointure sur clé étrangère NULL autorisé

Bonsoir à tous,

J'ai une table avec une clé étrangère qui n'est pas obligatoire.
J'aimerais faire un SELECT sur cette table avec jointure, qui fonctionne que la clé étrangère soit NULL ou non.

Après recherches, j'ai réussi à récupérer ce que je voulais mais en deux requêtes différentes (version simplifiée):

Code :
1
2
3
4
5
6
7
8
SELECT t1.Nom, t2.Titre
FROM t1
INNER JOIN t2 ON t1.IDTitre = t2.IDTitre OR t1.IDTitre IS NULL
WHERE t1.IDTitre IS NOT NULL;
 
SELECT t1.Nom, NULL
FROM t1
WHERE t1.IDTitre IS NULL;
Ce que j'aimerais faire c'est réussir à fusionner ces deux requêtes, cela fait plus d'une heure que j'essaie avec des IF...ELSE, IFNULL, ISNULL... mais sans succès...
Je crois bien que j'ai dû exploser le record d'affichage d'erreurs existantes pour SQL Server...
Une piste sur la fonction à utiliser ou quoi que ce soit sera bienvenue !

Merci d'avance pour votre aide.
Dark.Angel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2011, 07h56   #2
Membre éprouvé
 
Inscription : janvier 2009
Messages : 301
Détails du profil
Informations personnelles :
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2009
Messages : 301
Points : 454
Points : 454
Bonjour,

Je pense que ta requête devrait être la suivante
Code :
1
2
3
SELECT t1.Nom, t2.Titre
FROM t1
LEFT JOIN t2 ON t1.IDTitre = t2.IDTitre
Ainsi, tu récupères toutes tes lignes.
WHERE sera utile pour limiter l'accès à certaines lignes de ta BD.
Bon courage
seabs est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/02/2011, 17h28   #3
Invité régulier
 
Femme
Étudiant
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 7
Points : 7
Citation:
Envoyé par seabs Voir le message
Bonjour,

Je pense que ta requête devrait être la suivante
Code :
1
2
3
SELECT t1.Nom, t2.Titre
FROM t1
LEFT JOIN t2 ON t1.IDTitre = t2.IDTitre
Ainsi, tu récupères toutes tes lignes.
WHERE sera utile pour limiter l'accès à certaines lignes de ta BD.
Bon courage
Milles merci,
le LEFT JOIN fonctionne parfaitement.
J'ai vraiment fait du bidouillage pour rien à essayer de gérer le NULL avec le WHERE alors que c'était possible simplement en changeant de type de JOIN !

Merci encore
Dark.Angel 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 09h32.


 
 
 
 
Partenaires

Hébergement Web