Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête SQL complexe

26 juillet 2023 à 23:28:56

(J'ai mis un post sur le forum PHP mais je pense qu'il est plus destiné à la base de donnée?)

Bonjour,

j'utilise souvent les requêtes SQL avec jointure et j'y arrive relativement bien.

Néanmoins, sur ce cas là, je me trouve dépourvu de solution.

J'ai donc une table qui dispose de 6 champs et cette table me permet de connaitre les arrêts que fera le bus pour aller sur un sejour:

une colonne de base id auto incrémenté

une colonne "id_sejour" qui va me diriger vers la table doc_sejour

et de 4 colonnes "id_arret_1", "id_arret_2", "id_arret_3" et "id_arret_4" qui me donnera les endroits différents où s'arrêtera le bus pour aller vers ce séjour. Ses 4 données vont dialoguer avec la table index_institution

Mon dilemme sur ma requête SQL, est que je ne sais pas comment récupérer l'information sur les 4 arrêts dans une meme requête qui interroge la meme table.

Ce code ci dessous fonctionne car il me récupère le nom de l'arrêt numero 1

<?php $reponse = $bdd->query('SELECT ds.sejour_nom, ds.id 
                              FROM tournee_sejour ts
                              INNER JOIN doc_sejour ds ON ts.id_sejour=ds.id
                              INNER JOIN index_institutions ii ON ts.arret_1=ii.id_institution
                              WHERE ds.sejour_actif=1');
                while ($donnees = $reponse->fetch())
                {
                  ?>  
                    <option value="<?php echo $donnees['id']; ?>"><?php echo $donnees['sejour_nom']; ?></option>
                  <?php
                }
                  ?>



Celui là ne fonctionne pas car forcement le nom des arrêts ne sont pas les meme.

<?php $reponse = $bdd->query('SELECT ds.sejour_nom, ds.id 
                              FROM tournee_sejour ts
                              INNER JOIN doc_sejour ds ON ts.id_sejour=ds.id
                              INNER JOIN index_institutions ii ON ts.arret_1=ii.id_institution
                              INNER JOIN index_institutions ii ON ts.arret_2=ii.id_institution
                              INNER JOIN index_institutions ii ON ts.arret_3=ii.id_institution
                              INNER JOIN index_institutions ii ON ts.arret_4=ii.id_institution
                              WHERE ds.sejour_actif=1');
                while ($donnees = $reponse->fetch())
                {
                  ?>  
                    <option value="<?php echo $donnees['id']; ?>"><?php echo $donnees['sejour_nom']; ?></option>
                  <?php
                }
                  ?>



Comment dois je tourner ma requête pour pouvoir récupérer le nom des mes 4 arrêts? Puis-je faire plusieurs requête SQL et tous les mettre dans le meme while?

J'aimerais avec le while me lister les sejours avec leurs arrêts respectif.

Je vous remercie pour vos connaissances et j'espère avoir ete clair

-
Edité par rwayne 26 juillet 2023 à 23:31:22

  • Partager sur Facebook
  • Partager sur Twitter
27 juillet 2023 à 6:09:55

Bonjour,

Doublon

Les doublons nuisent au bon fonctionnement du forum et sont donc interdits. Si vous vous êtes trompé de section, il suffit de signaler votre sujet au staff pour qu'il le déplace au bon endroit.

Je vous invite à continuer la discussion sur l'autre sujet :  https://openclassrooms.com/forum/sujet/requete-sql-complexe-ab5a2

 Je ferme ici.

-
Edité par AbcAbc6 27 juillet 2023 à 6:11:34

  • Partager sur Facebook
  • Partager sur Twitter