|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
slt,
voila j'explique la situation: j'ai deux tables, une table BIEN et une table VILLE Ma table VILLE est constituée de deux champs, l'IDVILLE et NOMVILLE. Dans ma table BIEN je récupère l'IDVILLE de la table VILLE correspondant a un nom de ville donc. J'ai créé une requête qui se connecte a ma table BIEN et je voudrait en recuperer la valeur de l'IDVILLE sous la forme de charactere correspond au nom car actuellement j'utilise ce morceau de code qui me permet d'afficher l'IDVILLE: Code :
J'espere mêtre bien fais comprendre merci |
||
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
Salut, j'y je comprends bien tu veux une jointure avec la table VILLE qui te permette de remonter le nom de la ville a la place d'IDVILLE (seule info sur la ville dipso dans la table BIEN)
remplace ta requete comme suit : Code :
Bon vu que tu n'as pas montré ta requete d'origine je suppose qu'il n'y a pas de clause where, si c'est le cas bah il suffit de la rajouter.
__________________
il n'y a pas de sotte existence |
||
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
Ba en fait voila mon code au complet:
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : décembre 2005 Messages : 385 ![]() |
hum.. dejà ce serait peut-etre plus propre de faire comme ça:
Code :
$query = "SELECT * FROM prestation where type_prestation='".$_POST["typerech"]."' AND idtype=".$_POST["type_de_bien"]." AND NBPIECE=".$_POST["nbpieces"]." AND IDVILLE=".$_POST["ville"]; |
|
|
00
|
|
|
#5 | ||
|
Membre émérite
![]() |
Je pense que ça devrait faire l'affaire, par contre tu parles d'une table BIENS mais dans ton code c'est prestations... donc j'ai laissé comme ça
Code :
__________________
Le . est la base de toute bonne concaténation, marre de voir des echo "Mavar1 = $toto et Mavar2 = $titi"; ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi; pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi; |
||
|
|
00
|
|
|
#6 | ||
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
Salut
Ah bah c'est dommage,comme il est tout neuf je voulais lui faire prendre de bonne habitude avec la norme SQL99 beaucoup plus puissante, propre et limpide que la norme SQL92. Bah du coup voila la requete se retrouve farcie d'alias (dont certains sont inutiles car seul un champ est présent dans les 2 tables). Enfin pour la curiosité voici la solution que vous avez trouvée tranposée dans cette norme : Code :
__________________
il n'y a pas de sotte existence |
||
|
|
00
|
|
|
#7 |
|
Membre émérite
![]() |
Le JOIN ne peut s'effectuer que sur 1 champ dans ce cas ? ou il ya possibilité d'en avoir plusieurs ?
__________________
Le . est la base de toute bonne concaténation, marre de voir des echo "Mavar1 = $toto et Mavar2 = $titi"; ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi; pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi; |
|
|
00
|
|
|
#8 | ||||||||||||
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
Salut Guitou, ben dans ce cas précis, il n'y aura qu'un seul JOIN, dédié a la jointure qui sort de la clause where d'où il ne reste que les autres conditions de sorte que la jointure ainsi isolée parait plus explcite au premier coup d'oeil.
Remarque1 : USING permet d'évoquer le nom de champ commun, une seule fois =>USING(IDVILLE). ce qui évite le besoin de créer des alias. mais si la jointurer portait sur des nom de champs différents il faudrait utiliser ON. ex : Code :
imaginons qu'il faille remonter en plus du NOMVILLE, tout le même l'IDVILLE, il y a un rique de "field name ambigous' car ce nom de champ figure dans les 2 tables. Dans ce cas il convient de créer un alias sur l'une des 2 tables et dans préfixer le champs du SELECT et pas plus pas moins : Code :
Les autres champs ne souffrent d'aucune ambiguité. D'ailleurs même problème si IDVILLE est dans la clause where comme je viens de me rendre compte dans ta solution, Code :
remarque 3: petite digression certes, mais parmi les finesses que propose JOIN selon le besoin applicatif. Juste pour le besoin explicatif on va supposer que certains biens n'ont pas d'IDVILLE ou plus grave entant que gestion de l'intégrité des données, que celui-ci de figure pas/plus dans VILLE. Les biens 'sans ville' ne seront pas afficher, du fait de la jointure qui exige le respect de la condition IDVILLE de prestations = IDVILLE de ville. or tu veux forcer l'affichage de tous les biens y compris les biens orphelin de villes. Code :
Pour le cas des biens sans ville, le $row["NOMVILLE"] aura la valeur NULL. sur ce même principe : Code :
Ces lignes là n'afficheront que le Nom de la ville et le reste des champ sera a NULL. Bon LEFTet RIGHT n'ont pas vraiment d'interet ici, mais retiens juste qu'ils servent a débrider la jointure au profit de la table de gauche ou de la table de droite. en outre les requetes JOIN permettent des UPDATE multitables, a savoir que tu peux en une seule requete updater des champs de tables différents, ou des champs d'une tabel en fonction de valeurs de champs d'une autres tables. Sinon oui effectivement plusieurs JOIN son envisagles, cad autant de JOIn que de jointure : Code :
__________________
il n'y a pas de sotte existence |
||||||||||||
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
merci beaucoup pour toutes ces précisions, je débute alors faut pas me voir faire des trucs extraordinaires
je vais analyser tout ça je viens de lire vite fait, ya pas mal de trucs que je dois assimiler |
|
|
00
|
|
|
#10 |
|
Membre émérite
![]() |
Pfiouuuu merci bien pour ces éclaircissements
__________________
Le . est la base de toute bonne concaténation, marre de voir des echo "Mavar1 = $toto et Mavar2 = $titi"; ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi; pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi; |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
oh guitou, t'en apprend par la même occasion
|
|
|
00
|
|
|
#12 | |
|
Membre émérite
![]() |
Citation:
__________________
Le . est la base de toute bonne concaténation, marre de voir des echo "Mavar1 = $toto et Mavar2 = $titi"; ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi; pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi; |
|
|
|
00
|
|
|
#13 | |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
Citation:
Pr contre je viens de tester, la ville ne saffiche pas, l'idville non plus d'ailleurs, je vais voir, j'ai ptetre merdé |
|
|
|
00
|
|
|
#14 | |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
Citation:
|
|
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
Salut,
je pencherais pour un $row[kekchoz] dans les choux. Ca peterait une erreur sinon. as tu modifié la clé tu tableau associatif en fonction du nouveau champ? Je veux dire tente tu toujours d' affciher $row["IDVILLE"] ou as tu bien changé pour $row["NOMVILLE"]?
__________________
il n'y a pas de sotte existence |
|
|
00
|
|
|
#16 |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
j'ai effectivement testé avec nomville et ça n'a pas marché
|
|
|
00
|
|
|
#17 |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
arf autant pour moi, j'avais pas relancer ma page, comme j'avais deux pages , une result.php et une results.php, la page index.php que j'utilisais n'etait pas à jour
Donc c'est parfait ça marche à merveille, encore merci |
|
|
00
|
|
|
#18 |
|
Membre à l'essai
![]() Inscription : novembre 2004 Messages : 144 ![]() |
ola je comprend pas, a la premiere recherche, il m'envoie vers results.php, la deuxieme fois vers result.php, bon c'est pas bien grave je virerai la page result.php, mais ça me turlupine cette histoire
|
|
|
00
|
|
|
#19 | |
|
Membre émérite
![]() |
Citation:
mealtone ![]() N'oublie pas le tag
__________________
Le . est la base de toute bonne concaténation, marre de voir des echo "Mavar1 = $toto et Mavar2 = $titi"; ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi; pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi; |
|
|
|
00
|
|
|
#20 |
|
Membre habitué
![]() Inscription : octobre 2003 Messages : 102 ![]() |
change ton lien dans le script qui appelle cette page et actualise ta page non?
__________________
il n'y a pas de sotte existence |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com