Bonjour,
J'ai une table du genre
Et soit les lignes suivantes dans la table:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE "RESERVATION" ( "IDCLIENT" VARCHAR(10) NOT NULL, "NOM" VARCHAR(60) NOT NULL, "DEBUT" DATE NOT NULL, "FIN" DATE NOT NULL, "CHAMBRE" VARCHAR(2) NOT NULL, PRIMARY KEY ("IDCLIENT") );
Moi je veux par une requête SQL en Interbase, recupérer la dernière reservation de la table suivant la date de DEBUT. Les colonnes renvoyées sont: DEBUT, FIN, MOIS_ANNEE avec MOIS_ANNEE la colonne renommée qui renvoit que le mois en lettre et l'année.IDCLIENT NOM DEBUT FIN CHAMBRE
01 AA 01/04/2010 17/05/2010 01
02 BB 18/05/2010 13/06/2010 02
03 CC 14/06/2010 14/07/2010 01
04 DD 15/07/2010 19/08/2010 04
05 EE 15/07/2010 19/08/2010 03
NB Pas de doublon
Dans notre table, nous aurons:
Soit la requête que j'effectue:
DEBUT FIN MOIS_ANNEE
15/07/2010 19/08/2010 JUILLET 2010
En faisant cette requête, je reçois les deux dernières lignes de ma table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT R.DEBUT, R.FIN, CASE WHEN EXTRACT(MONTH FROM R.DEBUT)= 1 THEN 'JANVIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 2 THEN 'FEVRIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 3 THEN 'MARS' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 4 THEN 'AVRIL' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 5 THEN 'MAI' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 6 THEN 'JUIN' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 7 THEN 'JUILLET' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 8 THEN 'AOÛT' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 9 THEN 'SEPTEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 10 THEN 'OCTOBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 11 THEN 'NOVEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 12 THEN 'DECEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) END AS MOIS_ANNEE FROM RESERVATION R WHERE R.DEBUT = (SELECT MAX(R2.DEBUT) FROM RESERVATION R2)
Soit:
Pour que ça m'envoie juste une ligne, j'ai utilisé le mot DISTINCT du genre:
DEBUT FIN MOIS_ANNEE
15/07/2010 19/08/2010 JUILLET 2010
15/07/2010 19/08/2010 JUILLET 2010
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT DISTINCT R.DEBUT, R.FIN, CASE WHEN EXTRACT(MONTH FROM R.DEBUT)= 1 THEN 'JANVIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 2 THEN 'FEVRIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 3 THEN 'MARS' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 4 THEN 'AVRIL' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 5 THEN 'MAI' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 6 THEN 'JUIN' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 7 THEN 'JUILLET' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 8 THEN 'AOÛT' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 9 THEN 'SEPTEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 10 THEN 'OCTOBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 11 THEN 'NOVEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) WHEN EXTRACT(MONTH FROM R.DEBUT)= 12 THEN 'DECEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT) END AS MOIS_ANNEE FROM RESERVATION R WHERE R.DEBUT = (SELECT MAX(R2.DEBUT) FROM RESERVATION R2)
Et là je reçois un méssage d'erreur du genre:
J'attends vos remarques et propositions.---------------------------
Erreur
---------------------------
data type not supported for arithmetic.
---------------------------
OK
---------------------------
Partager