Requete multitables avec where et .... join ?
Résolu
maxireussite
Messages postés
405
Statut
Membre
-
maxireussite Messages postés 405 Statut Membre -
maxireussite Messages postés 405 Statut Membre -
Bonjour tous,
J'ai grandement besoin d'aide sur une requete multitables.
Les champs de ma table mr_intervenants possedent du texte sauf pour le champ ville_id qui possède un id.
Dans une requête je dois afficher le tuple, mais avec la ville qui correspond à ville_id.
Comment compléter la requête suivante ?
Merci d'avance.
J'ai grandement besoin d'aide sur une requete multitables.
Les champs de ma table mr_intervenants possedent du texte sauf pour le champ ville_id qui possède un id.
Dans une requête je dois afficher le tuple, mais avec la ville qui correspond à ville_id.
Comment compléter la requête suivante ?
"SELECT *
FROM mr_intervenants
WHERE intervenant_id = ".$intervenant_id ;
Merci d'avance.
9 réponses
-
Salut,
euh tuple = jeu d'enregistrements?
en SQL on peut utiliser des sus requêtes, donc on va faire une sous requête sur la table qui sert à avoir l'id commune(clé étrangère):
SELECT * FROM autre_table WHERE ville_id="clause";
Puis nous utiliserons ce résultat comme clause pour la requête finale:
SELECT * FROM mr_intervenants
WHERE (SELECT * FROM autre_table WHERE ville_id="clause");
On peut aussi utiliser les alias SQL.
Des exemples ici:
http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/ -
-
Bon, j'ai une double difficulté.
Je souhaite que la ligne soit définie par "WHERE intervenant_id = ".$intervenant_id"
Et que les deux tables soient liées par ville_id-
attention tu as un point devant $intervenant_id.
ville_id est commun aux 2 table?
tu veux extraire quoi de quelle table : table1 $val[champ X] et table2 $tab[champ y]
car là, pour ce que tu demandes, tu n'as besoin que d'une seule table il me semble.
pour ce que je comprends actuellement, ce aurais besoin de
"select * from table1 where intervenant_id= '$intervant_id' and ville_id='$ville_id'";
Ta selection multi-table ne sert que si tu lances une requête imbriquée style
$req="select * from table2" (supposons que le champ ville_id est en 1ere colonne)
$val=mysql_fetch_row($req,
while($result=mysql_fetch_row($val))
{
$req2="select * from table1 where ville_id='$result[0]';
tu lances ta connexion et tu peux alors exploiter les champs table1 et table2
et tu boucles
}
voila en gros ta requête détaillée si c'est ce que tu veux
Sinon exprime toi :o)
-
-
OUi ville_id est commun au deux tables.
Pour comprendre mon souhait, revoir le post du début.
MErci bcp en tous cas. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
JE résume
Table1 mr_intervenants
intervenant_id
nom
prenom
adresse
ville_id
Table 2 mr_villes
ville_id
ville
cp
je souhaite faire une requête avec tous les champs de la table1
mais que ville_id soit remplacé par le nom de la ville. Il faut que la ligne soit déterminée par intervenant_id. :
Comment compléter ou modifier en ce sens la requête suivante
"SELECT *
FROM mr_intervenants
WHERE intervenant_id = "$intervenant_id ;
J'espère avoir été plus clair.
Je vais donc tenté ta proposition Clé de 12. MErci.-
$req="select * from mr_villes where ville_id='$ville_id'";// 'je présume que $ville_id est connu :o) $val=mysql_query($req,$connexion); $ok= (mysql_num_rows,$val) <ital>/// là je décompose à fond)</ital> if ($ok=1){ //tu vérifies l'unicité de l'enregistrement; sinon cest pas la meme syntaxe $ville=mysql_fetch_row($val); $req2="select * from mr_intervenants where ville_id='$ville[0]'"; $exec=mysql_query($req2,$connexion); $inter=mysql_fetch_row($exec); $ville=$ville[1]; ///la c'est le nom de la ville $cp=$ville[2]; ///la c'est le CP $nom=$inter[1]; ///bon, c est le nom $prenom=$inter[2]; //le prenom $adresse =$inter[3]; }
et tu as toutes tes données pour remplir tes <td>
EDIT : Ajout des balises de code !
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code -
-
-
-
Bonjour,
Une simple jointure suffit ...
par exemple :SELECT I.intervenant_id ,I.nom ,I.prenom ,I.adresse ,I.ville_id ,V.ville ,V.cp FROM mr_intervenants I LEFT JOIN mr_villes V ON V.ville_id = I.ville_id WHERE intervenant_id = '$intervenant_id' ;
Cordialement,
Jordane -
Jordane45, tu m'excuseras mais j'ai recopié ton script tel quel (ou presque) et ça ne marche pas :
"SELECT I.intervenant_id ,I.nom ,I.prenom ,I.adresse ,I.ville_id ,V.ville ,V.cp FROM mr_intervenants I LEFT JOIN mr_villes V ON V.ville_id = I.ville_id WHERE intervenant_id = '$intervenant_id' ; -
J'ai remplacé par :
SELECT * FROM mr_intervenants LEFT JOIN pt_villes ON mr_villes.ville_id = mr_intervenants.ville_id WHERE intervenant_id = 'intervenant_id ' ;
Là ça marche. Je sais, on peut faire mieux, mais là ça faisait 2 jours que j'étais dessus...
MErci à tous