J'ai une base de données avec des visites guidées (tours de ville en groupe avec guide). Ce dont j'ai besoin, c'est d'une requête SQL (pour une base de données mysql 5.1.54) qui finira par me donner un tableau PHP avec les informations de plusieurs tables combinées. Je suis capable d'accomplir ceci en faisant une requête juste pour les 3 premières tables et en ajoutant ensuite les informations dans les tables 4 et 5 dans une boucle foreach.Requête SQL pour plusieurs tables (un-à-plusieurs) dans la base de données mysql
Mais, j'ai besoin d'utiliser la requête pour la recherche/filtrage (comme: montrer toutes les réservations où le partenaire a l'ID 9), donc j'ai besoin de SQL pour sélectionner les réservations correspondantes.
- Les réservations sans partenaires (tableau 4) et/ou guides (tableau 5) doivent être incluses.
- Tous les partenaires et les guides doivent être inclus dans le résultat (la réservation peut avoir plus de partenaires/guides)
- Toutes les informations dans les tableaux 4 et 5 doivent être incluses (comme le statut du tableau 4).
Une version simplifiée de la base de données:
Tableau 1: réservations:
id id_client id_tour
1 22 6
2 23 5
Tableau 2: clients (une réservation a un client):
id name
22 John
23 William
Tableau 3: visites (une réservation a une tournée)
id name
5 big tour
6 small tour
Tableau 4: partenaires (une réservation peut avoir plusieurs partenaires):
id id_reservation id_partner_type id_partner status
34 1 9 16 1
35 1 9 17 0
Tableau 5: guides (une réservation peut avoir guides multiples):
id id_reservation id_guide
18 1 14
19 1 15
J'ai essayé de nous en sortir mais je c ne pas obtenir une requête qui fait le travail. J'ai utilisé GROUP_CONCAT pour obtenir les numéros de partenaires et de guides multiples. Le plus gros problème est de ne pas pouvoir inclure les réservations qui n'ont pas de partenaires et/ou de guides comme la réservation 2.