requetes jointe pour appliquer un tri

Eléphant du PHP | 86 Messages

08 nov. 2019, 18:06

Bonjour à tous,
je vous sollicite car cela fait 2h que je lis des explications sur la façon de joindre des requêtes, mais franchement, je m'y perds.

j'ai une table qui contient des évènements.
event1 - date1
event2 - date2
event3 - date3

J'ai une autre table qui contient des inscrits à ces évènements.
inscritA - id_event1
inscritB - id_event2
inscritC - id_event3

J'ai mis en place une page qui listent les inscrits sous forme de tableaux successifs, regroupés par évènement.

Event 1 :
inscritA
inscritX

Event 2 :
inscritB
inscritY

Event 3 :
inscritC
inscritZ

pour cela, je fais une requete pour regrouper les inscrits par événement :
SELECT * FROM inscrits ORDER BY id_event
et à chaque fois que la valeur de l'id_event change, je ferme le tableau, j'en ouvre un nouveau et je continue

J'ai donc mes tableaux scindés par évènement et mes listes d'inscrits dans chaque tableau
SAUF que je n'arrive pas à trier ces tableaux par date d'évènements.... il sont en fait trié par id_event, ce qui correspond à l'ordre de création de mon évènement, pas à sa date. La date en question se trouve dans la table des évènements (date1, date2, date3)

Et je ne sais pas comment faire cette requete jointe ou imbriquée permettant à la fois de lister les inscrits, de les regrouper par évènement mais d'ordonner les évènements par date DESC

ça serait un truc comme ça :
SELECT * FROM inscrits ORDER BY (id_event eux même déjà ordonnés par SELECT * FROM evenements ORDER BY date) 
Mais je sais bien que ça n'a pas de sens...

Si une âme charitable voulait bien m'aider...
merci beaucoup !
si tu as un soucis en informatique, dis toi bien que quelqu'un d'autre l'a eu avant toi

Mammouth du PHP | 1234 Messages

08 nov. 2019, 19:48

quelque chose du genre :
SELECT inscrits.* FROM inscrits, evenements where evenements.id_event=inscrits.id_event ORDER BY evenements.date

Eléphant du PHP | 86 Messages

12 nov. 2019, 18:27

Merci ! effectivement, j'ai repris ton exemple, je l'ai comparé à mes requêtes à moi (que j'avais forcément simplifié pour l'exemple), j'ai appliqué la logique de ta requête et cela fonctionne comme je le voulais.
Le problème, c'est que, avec ton exemple, j'ai adapté pour mon cas.
Mais franchement, j'ai pas vraiment compris ce que j'ai fait... enfin, ce que TU as fait...
Du coup, la prochaine fois que je vais avoir un besoin approchant, j'ai peur de ne pas avoir compris.
Aurais tu la gentillesse de me commenter cette requête ou de me donner le lien d'un tuto qui explique cet usage ?
Car je ne sais même pas bien comment cette pratique s'appelle : requete jointe, requete imbriquée ?
merci beaucoup !
si tu as un soucis en informatique, dis toi bien que quelqu'un d'autre l'a eu avant toi

Mammouth du PHP | 1584 Messages

12 nov. 2019, 19:32

Il s'agit d'une jointure. une autre mannière d'écrire cette requète est comme ceci

SELECT inscrits.*
FROM inscrits
JOIN evenements ON evenements.id_event=inscrits.id_event
ORDER BY evenements.date

Ce qui peut se comprendre par joindre la table evenement en liant la colonne id_event de la table evenement avec la colonne id_event de la table inscrits pa r une relation d'égalité

n'hésite pas à mettre cette requète dans un outils de type phpmyadmin pour en visualiser le résultat. essaie aussi
SELECT * FROM inscrits, evenements where evenements.id_event=inscrits.id_event ORDER BY evenements.date
tu verra que chaque ligne contient les informations sur l'inscription ET sur l'evenement.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphant du PHP | 86 Messages

12 nov. 2019, 20:10

ok je vois... j'ai du mal avec les jointures... je les comprends, mais j'arrive pas à les créer moi meme...
j'ai encore du boulot de compréhension
merci de votre aide !
si tu as un soucis en informatique, dis toi bien que quelqu'un d'autre l'a eu avant toi