Auteur Sujet: Jointures, Je Comprend Pas  (Lu 2438 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne 2ae

  • Débutant
  • *
  • Messages: 70
    • http://www.ensieta.fr/2ae
Jointures, Je Comprend Pas
« le: 29 Mai 2004 à 11:01:52 »
Bonjour, désolé si le titre de mon sujet n'est pas très explicite.

Voila mon problème. J'ai deux tables :

structure de la table personne :
  • id - clé primaire
  • nom
  • prenom
  • origineGeographique
cette table regroupe les infos sur mes visiteurs

structure de la table photo :
  • id - clé primaire
  • filename
  • departement
cette table contient la liste de certains departements ainsi que le chemin vers une photo de ce departement.

je précise que mon visiteur n'est pas forcé de rentrer son dep d'origine et que je n'ai pas forcement une entree dans la table photo pour chaque origineGeographique de mes visiteurs. :huh:

Ma question est : Comment me retrouver avec un resultat de requete qui, pour chaque membre, me donne son prenom, son nom, et le chemin vers la photo de son departement si il en a indiqué un ?

J'imagine que c'est tout bete mais je n'y arrive pas....  :(

Merci

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Jointures, Je Comprend Pas
« Réponse #1 le: 29 Mai 2004 à 12:36:26 »
Il n'y a aucunes clés communes dans tes 2 tables, donc tu es coincé.

Il te faudrait 2 tables de ce style :
structure de la table personne :
id - clé primaire
nom
prenom
origineGeographique


structure de la table photo :
id - clé primaire
idpersonne - en liaison avec id de la table personne
filename
departement
« Modifié: 29 Mai 2004 à 12:37:38 par Ice »

Hors ligne 2ae

  • Débutant
  • *
  • Messages: 70
    • http://www.ensieta.fr/2ae
Jointures, Je Comprend Pas
« Réponse #2 le: 29 Mai 2004 à 14:17:55 »
j'ai pas du etre très clair dans mon premier post alors je précise.

origineGeographique est le numero de departement de mon visiteur donc j'ai bien un lien entre ma table personne et ma table photo....

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Jointures, Je Comprend Pas
« Réponse #3 le: 29 Mai 2004 à 14:48:17 »
Dans ce cas , ca doit etre une requete du style
SELECT personne.nom, personne.prenom, photo.filename FROM personne, photo WHERE personne.origineGeographique = photo.departement
« Modifié: 29 Mai 2004 à 14:48:42 par Ice »

Hors ligne 2ae

  • Débutant
  • *
  • Messages: 70
    • http://www.ensieta.fr/2ae
Jointures, Je Comprend Pas
« Réponse #4 le: 29 Mai 2004 à 20:06:08 »
Oui qqch du style mais pas exactement ca  ;)

parce que si je fais SELECT personne.nom, personne.prenom, photo.filename FROM personne, photo WHERE personne.origineGeographique = photo.departement je ne selectionne pas les membres qui n'ont pas rempli la colonne origineGeographique

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Jointures, Je Comprend Pas
« Réponse #5 le: 29 Mai 2004 à 22:31:10 »
SELECT personne.nom, personne.prenom, photo.filename FROM personne, photo WHERE personne.origineGeographique = photo.departement OR personne.origineGeographique = ''
?

Hors ligne 2ae

  • Débutant
  • *
  • Messages: 70
    • http://www.ensieta.fr/2ae
Jointures, Je Comprend Pas
« Réponse #6 le: 30 Mai 2004 à 09:29:42 »
Je ne voudrai pas faire le pénible mais.... ca ne marche pas.

Si je fais SELECT personne.nom, personne.prenom, photo.filename FROM personne, photo WHERE personne.origineGeographique = photo.departement OR personne.origineGeographique = '' il devient tout fou pour les personnes n'ayant pas renseigné la colonne origineGeographique.

Tout fou dans le sens ou :
pour chaque entrée dans la table personne qui n'a pas indiqué d'origineGeographique, il associe cette entrée avec l'ensemble des lignes de la table photo....

Alors une solution serait d'utiliser SELECT DISTINCT personne.nom, personne.prenom, photo.filename FROM personne, photo WHERE personne.origineGeographique = photo.departement OR personne.origineGeographique = '' pour limiter la casse mais ca ne fait que limiter la casse et ce n'est vraiment pas propre.

Hors ligne Lymf

  • Habitué
  • **
  • Messages: 111
    • http://www.edustries.be
Jointures, Je Comprend Pas
« Réponse #7 le: 30 Mai 2004 à 10:04:05 »
bon, ya une solution avec un UNION mais je sais pas si c optimisé

(SELECT personne.nom, personne.prenom, photo.filename FROM personne, photo WHERE personne.origineGeographique = photo.departement)
UNION
(SELECT personne.nom, personne.prenom FROM personne
LEFT JOIN photo ON personne.origineGeographique = photo.departement
WHERE personne.origineGeographique = '')
ORDER BY personne.nom, personne.prenom
« Modifié: 31 Mai 2004 à 18:18:04 par Lymf »

Hors ligne 2ae

  • Débutant
  • *
  • Messages: 70
    • http://www.ensieta.fr/2ae
Jointures, Je Comprend Pas
« Réponse #8 le: 30 Mai 2004 à 11:05:20 »
ok je te remercie, je vais essayer ca tout de suite  :D  

Hors ligne Lymf

  • Habitué
  • **
  • Messages: 111
    • http://www.edustries.be
Jointures, Je Comprend Pas
« Réponse #9 le: 31 Mai 2004 à 10:06:57 »
ca a marché ?

Hors ligne 2ae

  • Débutant
  • *
  • Messages: 70
    • http://www.ensieta.fr/2ae
Jointures, Je Comprend Pas
« Réponse #10 le: 31 Mai 2004 à 18:13:31 »
non ca ne marche pas mais j'avoue que je ne comprend vraiment pas pourquoi !

J'ai tenté ce bout la pour voir :
SELECT personne.nom, personne.prenom FROM personne
LEFT JOIN photo ON personne.origineGeographique = photo.departement
WHERE personne.origineGeographique = ''

et ca ne marche pas. Ca me repond page indisponible  :blink:  lorsque je la tape dans PHPmyadmin...va comprendre

j'ai aussi tenté
SELECT personne.nom, personne.prenom FROM personne
LEFT OUTER JOIN photo ON personne.origineGeographique = photo.departement

meme resultat. Meme pas d'erreur, juste un truc qui aboutit pas
« Modifié: 31 Mai 2004 à 18:21:49 par 2ae »

Hors ligne Lymf

  • Habitué
  • **
  • Messages: 111
    • http://www.edustries.be
Jointures, Je Comprend Pas
« Réponse #11 le: 31 Mai 2004 à 18:28:06 »
essaie avec IS NULL au lieu de = ''