j'ai lu la discussion http://www.phpfrance.com/forums/voir_su ... ris-15.php
qui arrive à la conclusion que ceci fonctionne:
SELECT id_operation, date_debut, date_fin, ecart,
CASE
WHEN DATEDIFF(date_fin,date_debut) <= 7 THEN "DM"
WHEN DATEDIFF(date_fin,date_debut) <= 15 THEN "SP"
WHEN DATEDIFF(date_fin,date_debut) <= 30 THEN "SP"
ELSE "MS" END
AS categorie
FROM operations;
Par extension, puis-je utiliser le case dans le tri?Voici mon cas précis:
J'ai des inscriptions à des cours.
J'ai de profs à donner à chacun des élèves.
J'ai une table d'étudiant qui ressemble à ceci:
CREATE TABLE id_etudiant(VARCHAR), Nom(CHAR), Prenom(CHAR), Date_Naissance(Date)
La table des inscriptions est ainsi:
CREATE TABLE id_inscription(VARCHAR), id_etudiant(VARCHAR), id_prof(VARCHAR), Dte_du_cours(DATE)
Lorsque commence le travail, je dois attribuer un prof aux étudiants inscrit. Chacun a donc, au début du travail une fiche comme ceci:
id_inscription | id_etudiant | id_prof | id_cours | blabla
1 | 901 | 0 | x | blabla
2 | 904 | 0 | x | blabla
3 | 906 | 0 | x | blabla
4 | 902 | 0 | x | blabla
5 | 911 | 0 | x | blabla
6 | 914 | 0 | x | blabla
7 | 916 | 0 | x | blabla
8 | 912 | 0 | x | blabla
En cours de travail, j'attribue un prof à chacun, la table s'enrichie donc en ce sens:
id_inscription | id_etudiant | id_prof | id_cours | blabla
1 | 901 | 2 | x | blabla
2 | 904 | 3 | x | blabla
3 | 906 | 3 | x | blabla
4 | 902 | 0 | x | blabla
5 | 911 | 0 | x | blabla
6 | 914 | 0 | x | blabla
7 | 916 | 0 | x | blabla
8 | 912 | 0 | x | blabla
Pour me faciliter le travail, j'ai besoin de trier les étudiants qui n'ont pas de prof attitrés selon leur date de naissance et le étudiant qui ont un prof attitré selon l'ordre alphabétique de leurs nom et prénom (référant à la table des étudiant par un JOIN LEFT).
Comme faire une requête qui me donne de tels résultats?
Suis-je sur la bonne piste en faisant ainsi:
Code : Tout sélectionner
SELECT PERS.Nom, PERS.Prenom, PROF.Nom, PROF.Prenom
FROM table_inscriptions AS INSCR
JOIN LEFT table_etudiants AS PERS on PERS.id_etudiant = INSCR.id_etudiant
JOIN LEFT table_profs AS PROF on PROF.id_prof=INSCR.id_prof
WHERE id_cours = x
ORDER BY
CASE
WHERE INSCR.id_prof = 0 THEN PERS.Date_naissance ASC
ELSE PERS.Nom ASC, PERS.Prenom ASC
END
LIMIT 0, 30