jointure de deux tables qui ne marche pas

  • Auteur de la discussion Auteur de la discussion vérité
  • Date de début Date de début
Nouveau WRInaute
bonjour,
voilà j'ai deux tables
Personnes et Communes
la table Personnes contient
-Nom char(255)
-Prénom char(255)
- Adresse char(255)
et la table Communes contient
-commune char(255)
-Nom char(255)
-codepostal char(255)
pour la jointure des deux tables, j'ai fait ces requetes mais ca ne marche pas
$sql = mysql_query('SELECT Personnes.Nom, Personnes.Prénom, Personnes.Adresse, communes.commune,communes.codepostal
FROM Personnes LEFT JOIN Communes ON Personnes.Nom = Communes.Nom');
et ca


'SELECT P.Nom, P.Prenom, P.Adresse, C.commune,C.codepostal
FROM Personnes P, Communes C where P.Nom = C.Nom'
j'ai vraiment besoin d'aide merci
merci
 
WRInaute discret
Il faut retirer le nom de la table Communes et rajouter un identifiant unique dans cette table.

Communes :
id_Communes
commune
codepostal

Personnes :
Nom
Prenom
Adresse
id_Communes

Comme ça une commune peut être attribuée à plusieurs personnes.

Ta requête devient :
Code:
SELECT Personnes.*, Communes.commune, Communes.codepostal
FROM Personnes LEFT JOIN Communes ON Personnes.id_Communes = Communes.id_Communes

Pour tu ne mets pas le code postal et la commune dans la table personne ?
 
Nouveau WRInaute
pourquoi dois je utiliser un identifiant? je veux juste selectioner les noms de personnes inscrites à la commune car toutes les personnes de la table personnes ne doivent pas être inscrites à la communes.donc j'aimerai garder ma table comme elle est et seclectionner les noms de personnes dans les deux tables.
merci
 
Nouveau WRInaute
pourquoi dois je utiliser un identifiant? je veux juste selectioner les noms de personnes inscrites à la commune car toutes les personnes de la table personnes ne doivent pas être inscrites à la communes.donc j'aimerai garder ma table comme elle est et seclectionner les noms de personnes dans les deux tables.
merci
 
WRInaute discret
parcequ'un indentifiant unique est bien plus performant qu'un champ texte
et ca permet aussi de pouvoir modifier le nom d'une ville tout en gardant la relation entre les différentes tables
 
WRInaute accro
vérité a dit:
pourquoi dois je utiliser un identifiant?

Je viens de tomber sur un de mes scripts, ben ce que tu as fait devrait tres bien marcher:
"SELECT p.Nom, p.Prenom, p.Adresse, c.commune, c.codepostal FROM Personnes p, Communes c WHERE p.Nom=c.Nom";

Soit dit en passant, reglysse a raison pour la structure des tables... puis c'est moins gourmand en ressource de comparer 1 nombre à une chaine de caractère.
 
Discussions similaires
Haut