Requete multitables avec where et .... join ?
Résolu/Fermé
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
-
Modifié par maxireussite le 28/02/2015 à 02:30
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 1 mars 2015 à 02:48
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - 1 mars 2015 à 02:48
A voir également:
- Requete multitables avec where et .... join ?
- Requête sql pix - Forum Python
- Nos systèmes ont détecté un trafic exceptionnel sur votre réseau informatique. cette page permet de vérifier que c'est bien vous qui envoyez des requêtes, et non un robot ✓ - Forum Virus
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Erreur de requete facebook - Forum Facebook
- Join pdf - Télécharger - PDF
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/
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
28 févr. 2015 à 04:09
28 févr. 2015 à 04:09
Merci bcp, je vais vérifier cela.
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
28 févr. 2015 à 04:19
28 févr. 2015 à 04:19
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
clé de 12
Messages postés
139
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
3 novembre 2024
1
28 févr. 2015 à 09:20
28 févr. 2015 à 09:20
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)
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
28 févr. 2015 à 13:13
28 févr. 2015 à 13:13
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
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 28/02/2015 à 13:24
Modifié par maxireussite le 28/02/2015 à 13:24
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.
clé de 12
Messages postés
139
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
3 novembre 2024
1
Modifié par jordane45 le 1/03/2015 à 00:55
Modifié par jordane45 le 1/03/2015 à 00:55
$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
clé de 12
Messages postés
139
Date d'inscription
samedi 19 juin 2010
Statut
Membre
Dernière intervention
3 novembre 2024
1
28 févr. 2015 à 19:46
28 févr. 2015 à 19:46
Si tu as plusieurs intervenants par ville, il te faudra mettre un champ <option> pour sélectionner l'intervenant et afficher ses coordonnées...mais c'est une autre histoire
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
28 févr. 2015 à 20:04
28 févr. 2015 à 20:04
Merc bcp, je prends le temps d'étudier cela.
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
Modifié par jordane45 le 1/03/2015 à 00:56
Modifié par jordane45 le 1/03/2015 à 00:56
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
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 1/03/2015 à 02:36
Modifié par maxireussite le 1/03/2015 à 02:36
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' ;
maxireussite
Messages postés
372
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
11 mars 2020
5
Modifié par maxireussite le 1/03/2015 à 02:49
Modifié par maxireussite le 1/03/2015 à 02:49
J'ai remplacé par :
Là ça marche. Je sais, on peut faire mieux, mais là ça faisait 2 jours que j'étais dessus...
MErci à tous
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