Requete multitables avec where et .... join ?
Résolu
maxireussite
Messages postés
372
Date d'inscription
Statut
Membre
Dernière intervention
-
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
maxireussite Messages postés 372 Date d'inscription Statut Membre Dernière intervention -
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.
A voir également:
- Requete multitables avec where et .... join ?
- Where is it - Télécharger - Gestion de fichiers
- Join pdf - Télécharger - PDF
- Erreur de requete facebook - Forum Facebook
- Requete sql pix ✓ - Forum MySQL
- L'opérateur ou l'administrateur a refusé la requête ✓ - Forum Windows
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/
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
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)
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.
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.
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 :
Cordialement,
Jordane
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' ;