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

Langage SQL Discussion :

Problème avec une requete


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Problème avec une requete
    Salut!

    J'ai un petit problème avec une requete en SQL que je n'arrive pas à résoudre.

    Voici la syntaxe de ma table en modèle relationnel

    ESCALE (codCroisiere, jour, codVil, Heure_arrivee, heure_depart)

    codCroisiere et codVil sont des clés externes.

    en gros cette table contient la liste des escales d'une croisière avec leur ordre (jour), et le port ou on est(codVil).
    Quand on est en mer (pas à un port) le champ codVIL vaut 'NULL'.

    Je cherche à trouver pour chaque croisière, la durée du parcours en mer le plus long entre deux ports successifs.

    Je ne voit pas comment calculer. c'est le truc entre deux ports successifs qui m'embete, car je saurait faire ca entre deux ports quelconques.

    J'ai reflechi plusieurs heures dessus, et je n'arrive à rien, donc si quelqu'un peut m'aider, je suis preneur!

    Merci d'avance!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Bonsoir,

    une idée en passant :
    Et si tu calculais pour un codCroisiere spécifique la plus petite duree entre deux escales tu trouverais quelle a été la precedente et la suivante, non?
    (pas sur de bien m'exprimer là...il se fait tard...)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Je vai y reflechir, mais je pense que ca va merder car le minimum qu'il va trouver entre deux escales ca va etre quand il y a aucun jour en mer au milieu!

    Mais c'est une idée que je vai creuser!

    Merci

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Oui mais tu peux remonter de date en date comme ça : de plus proche en plus proche.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    euh, je voi pas trop comment faire ca!
    On peut faire des boucles en SQL?
    Car sans boucles en fait je voi pas!

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Re,

    Et sinon tu pourrais pas traiter cette question au niveau de l'appli?
    Tu recuperes toutes les escales par ordre chrono et ensuite tu fais des ptits calculs de dates pour savoir quelle est la plus longue durée entre deux.

    Sinon on peut faire des boucles en PL/SQL (avec Oracle) mais je ne sais pas si ça t'interresse.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Je n'ai pas pu tester, mais quelque chose comme ça devrait fonctionner :
    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
    18
    19
    20
    21
    SELECT  deb.codCroisiere
        ,   deb.jour
        ,   deb.heure_depart
        ,   fin.jour
        ,   fin.Heure_arrivee
    FROM    escale  AS deb
        INNER JOIN
            escale  AS fin
            ON  fin.codCroisiere = deb.codCroisiere
            AND fin.jour || fin.Heure_arrivee > deb.jour || deb.heure_depart
            AND deb.cod_vil IS NOT NULL
            AND fin.cod_vil IS NOT NULL
    WHERE   EXISTS
            (   SELECT  1   
                FROM    escale  AS clc
                WHERE   deb.codCroisiere = clc.codCroisiere
                    AND fin.jour || fin.Heure_arrivee >= clc.jour || clc.heure_depart
                    AND clc.cod_vil IS NOT NULL
                HAVING  deb.jour || deb.heure_depart = MAX(clc.jour || clc.heure_depart)
            )
    ;

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    En fait, j'ai pas le droit de le traiter au niveau de l'application et c'était bien ca mon problème fayred!

    Merci beaucoup al1_24, je regarde ca, et je te dirait!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mysql - problème avec une requete ajout
    Par mekongboy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/08/2006, 19h17
  2. problème avec une requete utilisant LIMIT
    Par kow_Ced dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/08/2006, 17h01
  3. problème avec une requete
    Par PAYASS59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/03/2006, 14h12
  4. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 11h39
  5. [debutant]Problème avec une requete ....
    Par MichMich29 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/07/2005, 18h19

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