Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 15/10/2007, 14h16   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 1
Points : 0
Points : 0
Par défaut [SQL] Problème de SELECT

Bonjour,

Voici mon problème :
Dans ma BDD il y a 4 tables
Fournisseur
id_fnr(PK)
nom
pays

Intervention
id_interv(PK)
id_fnr(FK)
type_intervention


cp2
id_cp2(PK)
id_fnr(FK)
id_domaine(FK)

domaine
id_domaine(PK)

user
id_user(PK)
id_cp2(FK)
username



Disons que je fais un :
SELECT f.nom, i.type_intervention, u.username
FROM Fournisseur f, Intervention i, cp2 c, domaine d,user u
WHERE f.id_fnr=i.id_fnr
AND f.id_fnr=c.id_fnr
AND c.id_cp2=u.id_cp2

ce qui me donne (SI JAI BIEN REMPLI TOUTES LES TABLES):

nom type_intervention username
ELCAN ASYS Poquito Y.

Par contre, là où mon problème se pose c'est le cas où je ne rempli pas toutes les tables.
Si je ne remplis pas cp2 (et donc user de même) ma requete SELECT ne renvoi aucun résultat.
Ma question est donc comment faire pour que la requete selectionne tout même si je n'ai pas rempli toutes les tables.
Cela pourrait donner :
nom type_intervention username
ELCAN ASYS
DaN02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 14h22   #2
Membre éclairé
 
Étudiant
Inscription : juin 2005
Messages : 289
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2005
Messages : 289
Points : 371
Points : 371
Envoyer un message via MSN à DroP
Il faut que tu regardes du coté des jointures plus complexes (à savoir LEFT OUTER JOIN par exemple)

De cette manière tu peux remonter des lignes meme sans corespondance :

Code :
1
2
3
4
5
6
 
SELECT f.nom, i.type_intervention, u.username
FROM Fournisseur f, domaine d  
LEFT OUTER JOIN Intervention i ON f.id_fnr=i.id_fnr
LEFT OUTER JOIN cp2 c ON f.id_fnr=c.id_fnr
LEFT OUTER JOIN user u ON c.id_cp2=u.id_cp2
Edit : Un lien vers un site qui présente visuellement (c'est bien pratique) les types de jointures que tu peux réaliser entre 2 tables : LIEN
DroP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web