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

SQL Oracle Discussion :

Bug requete SQL


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut Bug requete SQL
    Bonjour,

    Je suis entrain de faire une requête SQL et celle-ci ne me retourne pas le bon résultat. En effet, elle est censé me retourner 1 au lieu de 0 comme elle le fait actuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	SELECT COUNT(DISTINCT idVol) INTO nbVol FROM VOL
    	JOIN MISSION ON VOL.idMission = MISSION.idMission
    	JOIN ESCALE ON MISSION.idMission = ESCALE.idMission
    	WHERE TRUNC(dateVol) = '17/05/15'
    	AND ((villeDepart = 'Paris' AND villeArrivee = 'Marseille')
    	OR (villeDepart = 'Paris' AND ville = 'Marseille')
    	OR (ville = 'Paris' AND ville = 'Marseille')
    	OR (ville = 'Paris' AND villeArrivee = 'Marseille'))
    	AND ((TO_DATE(TO_CHAR(heureDepart,'HH24:MI'),'HH24:MI') = TO_DATE('11:00' ,'HH24:MI'))
    	OR (TO_DATE(TO_CHAR(ESCALE.heureArrivee,'HH24:MI'),'HH24:MI') = TO_DATE('11:00','HH24:MI')));
    En effet, il s'agit d'une mission avec deux escale et là, les villes choisit sont les ville des escales.
    Je pense que le problème provient de l'heure car il ne sait quelle heure choisir pour l'escale.
    L'heure que je donne, c'est l'heure de la première escale, c'est-à-dire Paris ici.
    Il faudrait prendre l'heure de la ville qui se trouve à gauche dans la condition

    Je peut aussi avoir des missions avec une seule escale et dans ce cas, on prendra par exemple comme condition villeDepart et ville pour tester.
    Mais également des missions avec 3, 4 escales.

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Bonjour,
    Sans le descriptif des tables (surtout que certaines colonnes ne sont pas préfixées dans la requête), un jeu de test et le résultat attendu, je ne vois pas trop comment répondre à la question...

    Je ne comprends pas non plus "Il faudrait prendre l'heure de la ville qui se trouve à gauche dans la condition", ni le "SELECT INTO", ni l'utilisation de conversion date > chaine > date pour tester les heures...

    Tatayo.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Ce que je cherche c'est s'il existe un vol qui contient au moins ces ville là donc l'heure tester est égale à l'heure de départ ou d'une escale.

    Par exemple, les ville que j'ai mi ici correspondent à deux d'un vol qui contient 3 escale et une ville de départ et d'arrivé.

    L'heure passé est l'heure de départ de l'escale Paris

    Table mission:
    -idMission
    -villeDepart
    -villeArrivee
    -heureDepart
    -heureArrivee

    Table escale:
    -idEscale
    -ville
    -heureArrivee
    -idMission

    Table vol:
    -idVol
    -dateVol
    -idMission

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Il manque toujours un jeu d'essai et le résultat attendu...
    Mais je vois déjà un problème, puisque cette condition ne sera jamais remplie:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    OR (ville = 'Paris' AND ville = 'Marseille')
    ...

    Et si je comprends bien le schéma, dans le cas d'un vol direct il n'y a pas de ligne dans la table escale qui corresponde. Donc une jointure interne avec la table ESCALE fait que les vols directs sont ignorés.

    Enfin, pour les escales seul l'heure d'arrivée est renseignée, par l'heure de départ, ce qui contredit "L'heure passé est l'heure de départ de l'escale Paris".


    Tatayo.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Oui pour l'escale on prend l'heure d'arriver
    mais sinon la je ne vois pas comment refaire ma requête

  6. #6
    Membre émérite Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Par défaut
    Citation Envoyé par totot Voir le message
    je ne vois pas comment refaire ma requête
    Commencez par changer vos filtres comme l'a dit tatayo

    Si vous dites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OR (ville = 'Paris' AND ville = 'Marseille')
    qu'est ce que ca signifie ?
    ca veut dire qu'on doit avoir au même moment VILLE = PARIS = MARSEILLE...
    c'est pas possible. Heureusement que c'est dans un OR.

    Essayez un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    where 'PARIS' in (villeDepart , ville)
    and 'MARSEILLE' in (villeArrivee , ville)

    c'est juste une petite modif qui devrait pas changer grand chose, mais c'est sans doute un peu plus logique...



    et sinon, essayez de jouez votre requete petit à petit...
    comme ca, vous verez où ca coince:

    premier etape :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(DISTINCT idVol) INTO nbVol FROM VOL
    deuxieme etape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT(DISTINCT idVol) INTO nbVol FROM VOL
    JOIN MISSION ON VOL.idMission = MISSION.idMission
    ...

    etc etc

    vous rajoutez une ligne à chaque execution, et vous voyez à partir de quand vous avez votre 0. ca vous aidera à identifier la condition problématique.

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 442
    Par défaut
    Ce n'est pas faute de demander...
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    ...un jeu de test et le résultat attendu...
    Citation Envoyé par tatayo Voir le message
    Il manque toujours un jeu d'essai et le résultat attendu...
    Tatayo.

Discussions similaires

  1. [PDO] requete SQL qui bug
    Par thebarbarius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/10/2012, 16h49
  2. [VB 2005] bug dans Requete SQL
    Par tofque dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/02/2008, 17h50
  3. bug sur requete sql
    Par Willygramme dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/08/2007, 12h36
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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