IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[REQUETE ORACLE] Vols avec ou sans escales


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [REQUETE ORACLE] Vols avec ou sans escales
    Bonjour,
    pour mon projet , je bloque sur une requete un peu tordue.
    Toute aide est la bienvenue

    Tables :
    vol_description
    (num_vol , date , heure_depart , heure_arrivee, aeroport_depart , aeroport_arrivee , nom_compagnie)
    Du genre:
    ('FT207','02/09/06','10:00:00','11:00:00','Roissy',ChdeGaule,'Airfrance')
    ('FT208','02/09/06','11:00:00','21:00:00','ChdeGaule','Dorval','Airfrance')
    ('FT209','22/09/06','16:00:00','21:00:00','Roissy','Frankfurt','Airfrance')


    Requetes :
    Les (couples de) noms d’aéroports qui sont connectés par un vol direct ou par une paire de vols appartenant à la même compagnie qui utilisent un tiers aéroport comme escale (roissy - Dorval via Charles de Gaule).

    Resultats :
    (aeroport_depart , aeroport_arrivee)
    ('Roissy','Dorval')
    ('Roissy','Frankfurt')



    On suppose que pour detecter une escale il faut :
    - A B et B C
    - meme nom de compagnie X.
    - meme date
    - heure arrivee B = heure depart B.

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    Voici une requête pour detecter les escales mais je ne suis pas sure de moi..tu peux toujorus l'essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select a.aeroport_depart, b.aeroport_arrivee
    from vol_description depart, vol_description arrivee
    where depart.nom_compagnie = arrivee.nom_compagnie
    and depart.date = arrivee.date
    and.depart.heure_arrivee = arrivee.heure_depart

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    oops au lieu de mettre a. aeroport_depart --> depart.aeroport_depart et b.aeroport_arrivee--> arrivée.aeroport_arrivee

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut

    Je suis cette piste ...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut sa avance
    vol_description
    (num_vol , date , heure_depart , heure_arrivee, aeroport_depart , aeroport_destination, nom_compagnie)
    ('FT207','02/09/06','10:00:00','11:00:00','Roissy',ChdeGaule,'Airfrance')
    ('FT208','02/09/06','11:00:00','21:00:00','ChdeGaule','Dorval','Airfrance')
    ('FT209','22/09/06','16:00:00','21:00:00','Roissy','Frankfurt','Airfrance')
    Grace a ton aide je peux detecter les vols avec escales.
    Ainsi , cette requete permet de lister les vols avec escales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE VIEW liaisons AS
    SELECT DISTINCT Dep.aeroport_depart , Arr.aeroport_destination
    FROM vol_description Dep, vol_description Arr
    WHERE  Dep.code_compagnie = Arr.code_compagnie 
    AND	   Dep.date_ = Arr.date_
    AND	   Dep.heure_arrivee = Arr.heure_depart
    AND	   Dep.aeroport_destination = Arr.aeroport_depart;
    donne :
    (aeroport_depart , aeroport_destination)
    ('Roissy','Dorval')

    Comment je pourrais aussi ajouter les vols directs
    cad
    ('Roissy','Frankfurt')

  6. #6
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 380
    Points
    380
    Par défaut
    Salut
    Il faut utiliser la clause CONNECT BY
    Tu veux quoi exactement, déduire que de Roissy tu arrives à Dorval?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ben le requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE VIEW liaisons AS 
    SELECT DISTINCT Dep.aeroport_depart , Arr.aeroport_destination 
    FROM vol_description Dep, vol_description Arr 
    WHERE  Dep.code_compagnie = Arr.code_compagnie 
    AND      Dep.date_ = Arr.date_ 
    AND      Dep.heure_arrivee = Arr.heure_depart 
    AND      Dep.aeroport_destination = Arr.aeroport_depart;
    sort toutes les escales et deduit que de Roissy on arrive à Dorval.
    Mais j'aimerais afficher en plus les autres vols direct comme 'roissy frankfurt (cf table suivante)

    table vol description
    (num_vol , date_ , heure_depart , heure_arrivee, aeroport_depart , aeroport_destination, code_compagnie)
    ('FT207','02/09/06','10:00:00','11:00:00','Roissy',ChdeGaule,'Airfrance')
    ('FT208','02/09/06','11:00:00','21:00:00','ChdeGaule','Dorval','Airfrance')
    ('FT209','22/09/06','16:00:00','21:00:00','Roissy','Frankfurt','Airfrance')


    Je suppose que je dois faire une union de deux ensembles.

    Sinon est ce que tu pourrais me donner a quoi tu as penser avec connect by

  8. #8
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 380
    Points
    380
    Par défaut
    CONNECT BY c'est pour des requêtes hiérarchiques. Un peu difficile à expliquer maintenant. Si tu as plein d'escales c'est intéressant pour relier
    A à F si A-B et B-C et C-D et D-F existent.

    Avec un UNION si tu veux afficher des choses en + oui.

    Tente de voir ça pour tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    COLUMN DepartRoissy FORMAT A30
    SELECT LPAD(' ',4*LEVEL-4) || aeroport_destination
           DepartRoissy, heure_depart , heure_arrivee
      FROM vol_description 
      START        WITH aeroport_depart ='Roissy'
      CONNECT BY PRIOR aeroport_destination = aeroport_depart ;
    Si tu veux parcourir tous les vols il faudra définir une racine que tu remplaceras (Roissy joue ce rôle + haut) et qui sera reliée à chaque
    aéroport de départ. Je vais me coucher. bye

Discussions similaires

  1. Requeter ORACLE sans passer par un fichier .dqy
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2008, 10h36
  2. requete oracle avec tirage aleatoire
    Par gdebre dans le forum Oracle
    Réponses: 1
    Dernier message: 19/10/2007, 15h31
  3. Oracle/XML avec une requete imbriquée
    Par FABFAB125 dans le forum SQL
    Réponses: 16
    Dernier message: 20/07/2007, 12h52
  4. requete oracle avec variable
    Par esthr dans le forum Oracle
    Réponses: 11
    Dernier message: 22/02/2007, 14h39
  5. [Oracle] requete oracle avec php
    Par ghostdog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/05/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo