J'avoue que je galère un peu pour trouver un titre à ma question.
Voilà ce que j'ai besoin de faire :
j'ai une table de rendez-vous, chaque rendez-vous est associé à un client. Un client peut avoir plusieurs rendez-vous bien sûr
Sur une page d'agenda j'aimerai afficher pour chaque rendez-vous le numéro (position) de ce rendez-vous : est-ce le premier, le second... de ce client
j'ai une table "rdv"
rdv_id
client_id
date
je fais une petite jointure sur la table "client" pour afficher le nom, prénom...
donc ma requête actuelle est du genre :
SELECT r.rdv_id, r.client_id, r.date, c.nom, c.prenom
FROM rdv r
INNER JOIN client c ON r.client_id = c.client_id
WHERE r.date BETWEEN '$date1' AND '$date2'
ORDER BY r.date |
nota : PHP/MySQL
Maintenant pour afficher le numéro de la position du rendez-vous (en se basant sur la date) il faudrait que je fasse un select imbriqué en comptant pour chaque rdv le nombre de rdv du même client_id avec une date inférieur à la date du rdv courant... là j'avoue que je patauge un peu dans la semoule.
Même chose pour chercher je veux bien des suggestions de mots clés. J'ai trouvé quelques trucs sur stackoverflow mais ça ne répond pas trop à ma demande
J'aimerai éviter :
- de refaire 1 requête SQL par rendez-vous
- de stocker la position en BDD parce que c'est généralement encore plus le bazar à gérer (insertion d'un nouveau rendez-vous = il faut tout recalculer et mettre à jour puisque le nouveau peut être entre 2 déjà programmés - le rdv 5 devient 6, le rdv 6 devient 7...) je ferai ça si je m'en sors pas autrement, mais ça me parait overkill.
Message édité par depart le 18-10-2017 à 10:35:31