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 13/09/2006, 13h00   #1
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Par défaut [SQL] PB : Jointure SQL ne fonctionne pas..

Bonsoir le forum

J'ai un probleme avec ma jointure :

voic le code :
Code :
1
2
3
4
5
6
 
$nom_part=@$_GET['nom_part'];
$res = mysql_query("SELECT dem.NOM, dem.CP, part.CODEPOSTAL FROM dem WHERE dem.CP = substr(part.CODEPOSTAL,0,2) and part.PERSONNE=$nom_part") or die(mysql_error()); 
while($ligne = mysql_fetch_array($res)) { $id = $ligne["NOM"] or die(mysql_error()); 
echo "$id"; 
}
Le but du code est le suivant :

Dans la table dem, j'ai les variables suivantes :
NOM, CP
Dans la table part j'ai les variable suivantes :
PERSONNE, CODEPOSTAL

Je voudrais faire une comparaison entre dem.CP et part.CODEPOSTAL
si dem.CP = 'substr(part.CODEPOSTAL,0,2)'
alors s'affcihe le NOM de la table dem

Mais cela ne marche pas et le message d'erreru semble provenir de substr :
"You have an error in your SQL syntax near '(part.CODEPOSTAL,0,2) and part.PERSONNE=LEON' at line 1"

Merci a tous.
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 13h05   #2
Expert Confirmé
 
Avatar de yiannis
 
Inscription : septembre 2005
Messages : 1 499
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : septembre 2005
Messages : 1 499
Points : 2 563
Points : 2 563
bonjour,

substr est une instruction mysql? Si c'est php, tu ne peut pas l'utiliser dans ta requete

apres recherche substr() est bien supporte par mysql depuis la version 4.1
quelle est ta version de mysql?
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN
yiannis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 13h11   #3
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
J'utilise deja cette fonction dans une autre partie du programme et elle foncitonne bien ....

Comprends pas, est ce que cela ne viendrait pas de l'evolution de MySQL 5.0 avec les prioirités du join ?

Comment faire, s'il vous plait?

Merci
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 13h27   #4
Membre confirmé
 
Avatar de Hug0_76
 
Inscription : août 2006
Messages : 293
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : août 2006
Messages : 293
Points : 297
Points : 297
Envoyer un message via MSN à Hug0_76
Salut,

tu m'apprends un truc tiens, substr je pensais que c'était SUBSTRING, enfin bref!

Sinon tu ne selectionnes pas ta table part :
Code :
1
2
SELECT dem.NOM, dem.CP, part.CODEPOSTAL FROM dem, part WHERE dem.CP = substr(part.CODEPOSTAL,0,2) and part.PERSONNE=$nom_part
__________________
Si la connerie de certain fonctionnait au gazole il y aurait pénurie !!!!

Lao Tzeu a dit : "Il faut trouver la voix"...Si tu ne l'as pas trouvé, je vais t'aider en te coupant la tête.
Hug0_76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 13h48   #5
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Je pense que mon PB vient d'ailleur car en fait j'ai fait cette modif qui me renvoi l'erreur suivante :

url d'appel du script :
domainetoto.com/test.php?personne=LEON
resultat :
Unknown column 'LEON' in 'where clause'
Alors que dans ma BDD dans la table part j'ai bien un insert avec dans colonne PERSONNE le mot LEON avec un part.CP qui est bien égale a dem.CP.

voici le code modifié par rapport au code initial (j'ai viré le substr pour plus de sécurité et créé une colonne qui reprend le résultat)

Citation:
$res = mysql_query("SELECT dem.nom,dem.CP,part.CP FROM dem JOIN part ON (dem.CP=part.CP and part.PERSONNE=$personne)") or die(mysql_error());
while($ligne = mysql_fetch_array($res)) {
$id = $ligne["nom"] or die(mysql_error());
echo "$id";
}

L'erreur affichée correspond a ce que l'on trouve sur la FAQ concernant MySQL 5.0 alors que mon MySQL est une version MySQL 3.23.49.: http://mysql.developpez.com/faq/?page=SYNTAXE_JOINTURES

JE COMPRENDS PLUS RIEN

Merci de votre gentillesse
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 14h01   #6
Rédacteur
 
Homme
Geek entrepreneur
Inscription : novembre 2004
Messages : 1 035
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Geek entrepreneur

Informations forums :
Inscription : novembre 2004
Messages : 1 035
Points : 1 813
Points : 1 813
part.PERSONNE=$personne

N'aurais-tu pas oublié tes guillements autour de $personne ?
hugo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 14h03   #7
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
NON NON l'erreur est toujours identique par contre directement sur mon PHPMYADMIN tout fonctionne

aie aie


Edit j'ai trouvé l'erreur, cela venait d'une parenthese laissée dans le script en dehors du select.

Relisez vous qui disait l'autre

Merci a tout le monde pour votre gentillesse.

Bonne journée le fourm
kaolivier 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 05h56.


 
 
 
 
Partenaires

Hébergement Web