[Résolu][Oracle] Problème requete

Problème requete [Résolu][Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 19-05-2008 à 10:32:30    

Bonjour,
 
J'ai un petit problème par rapport à une requête que j'ai récupéré de MySQL, et que je dois faire passer sous Oracle.
 
La requête sous MySQL est la suivante :  
 

Code :
  1. SELECT  *,
  2.               IF(critere_aller = 'depart', DATE_FORMAT(date_depart, '%d/%m/%Y'), DATE_FORMAT(date_arrivee, '%d/%m/%Y')) as date_depart_fr,
  3.               IF(critere_aller = 'depart', date_depart, date_arrivee) as date_depart,
  4.               IF(critere_aller = 'depart', DATE_FORMAT(h_depart, '%H'), DATE_FORMAT(h_arrivee, '%H')) as h_depart,
  5.               IF(critere_aller = 'depart', DATE_FORMAT(h_depart, '%i'), DATE_FORMAT(h_arrivee, '%i')) as min_depart,
  6.               IF(retour = 'oui', if (critere_retour = 'depart', DATE_FORMAT(date_depart_retour, '%d/%m/%Y'), DATE_FORMAT(date_arrivee_retour, '%d/%m/%Y')), 'AS') as date_retour_fr,
  7.               IF(retour = 'oui', if (critere_retour = 'depart', DATE_FORMAT(h_depart_retour, '%H'), DATE_FORMAT(h_arrivee_retour, '%H')), 'AS') as h_retour,
  8.               IF(retour = 'oui', if (critere_retour = 'depart', DATE_FORMAT(h_depart_retour, '%i'), DATE_FORMAT(h_arrivee_retour, '%i')), 'AS') as min_retour
  9.       FROM mis_vols
  10.       WHERE id_mission = 56984
  11.       ORDER BY date_depart


 
Celle-ci marche parfaitement sous MYSQL, et quand j'exécute celle-ci sous PL/SQL Developer, j'ai une erreur ORA-00923 qui signifie que le FROM est mal placé :
 

Code :
  1. SELECT  *,
  2. IF(critere_aller = 'depart', TO_CHAR(date_depart, 'dd/mm/yyyy'), TO_CHAR(date_arrivee, 'dd/mm/yyyy')) as date_depart_fr,
  3. IF(critere_aller = 'depart', date_depart, date_arrivee) as date_depart,
  4. IF(critere_aller = 'depart', TO_CHAR(h_depart, 'hh24'), TO_CHAR(h_arrivee, 'hh24')) as h_depart,
  5. IF(critere_aller = 'depart', TO_CHAR(h_depart, 'mi'), TO_CHAR(h_arrivee, 'mi')) as min_depart,
  6. IF(retour = 'oui', if (critere_retour = 'depart', TO_CHAR(date_depart_retour, 'dd/mm/yyyy'), TO_CHAR(date_arrivee_retour, 'dd/mm/yyyy')), 'AS') as date_retour_fr,
  7. IF(retour = 'oui', if (critere_retour = 'depart', TO_CHAR(h_depart_retour, 'hh24'), TO_CHAR(h_arrivee_retour, 'hh24')), 'AS') as h_retour,
  8. IF(retour = 'oui', if (critere_retour = 'depart', TO_CHAR(h_depart_retour, 'mi'), TO_CHAR(h_arrivee_retour, 'mi')), 'AS') as min_retour
  9. FROM mis_vols
  10. WHERE id_mission = 56984
  11. ORDER BY date_depart


 
J'ai essayé de chercher pour trouver un tutorial expliquant les conditions dans un select mais je ne trouve pas.
 
Quelqu'un connaitrait la raison du non fonctionnent de la requête sous Oracle ?
 
Merci d'avance.


Message édité par krovomi le 19-05-2008 à 12:51:48
Reply

Marsh Posté le 19-05-2008 à 10:32:30   

Reply

Marsh Posté le 19-05-2008 à 11:15:51    

Personne ne voit ?

Reply

Marsh Posté le 19-05-2008 à 11:40:23    

Un DECODE à la place du IF ?


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Marsh Posté le 19-05-2008 à 12:49:31    

oui en effet il fallait un decode :
 
le code ressemble à ceci:
 
SELECT id_vol, id_mission, critere_aller, date_depart, date_arrivee, h_depart, h_arrivee, id_pays_depart, id_aeroport_depart, id_ville_depart, id_pays_arrivee, id_aeroport_arrivee, id_ville_arrivee, classe, billet_contraintes, commentaires, retour, critere_retour, date_depart_retour, date_arrivee_retour, h_depart_retour, h_arrivee_retour, destinataire,
       DECODE(critere_aller, 'depart', TO_CHAR(date_depart, 'dd/mm/yyyy'), TO_CHAR(date_arrivee, 'dd/mm/yyyy')) date_depart_fr,
       DECODE(critere_aller, 'depart', date_arrivee, date_arrivee) date_depart,
       DECODE(critere_aller, 'depart', TO_CHAR(h_arrivee, 'hh24'), TO_CHAR(h_arrivee, 'hh24')) h_depart,
       DECODE(critere_aller, 'depart', TO_CHAR(h_arrivee, 'mi'), TO_CHAR(h_arrivee, 'mi')) min_depart,
       DECODE(retour, 'oui', decode(critere_retour, 'depart', TO_CHAR(date_depart_retour, 'dd/mm/yyyy'), TO_CHAR(date_depart_retour, 'dd/mm/yyyy')), 'AS') date_retour_fr,
       DECODE(retour, 'oui', decode(critere_retour, 'depart', TO_CHAR(h_depart_retour, 'hh24'), TO_CHAR(h_depart_retour, 'hh24')), 'AS') h_retour,
       DECODE(retour, 'oui', decode(critere_retour, 'depart', TO_CHAR(h_depart_retour, 'mi'), TO_CHAR(h_depart_retour, 'mi')), 'AS') min_retour
       FROM mis_vols
       WHERE id_mission = 28
       ORDER BY date_depart

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed