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

Requêtes MySQL Discussion :

Opération entre ligne au sein d'une même table.


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut Opération entre ligne au sein d'une même table.
    Bonjour,

    Voici mon problème, j'ai une table AGENDA qui représente le planning d'une compagnie aérienne.
    Le but de la requête est de connaitre le temps que l'avion passe sur terre entre deux vol pour une date donnée.

    Voici la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    -- code n°1
    CREATE TABLE `AGENDA` (
      `NUMERO_AVION` varchar(20) NOT NULL,
      `DEPART` DATETIME NOT NULL,
      `ARRIVEE` DATETIME NOT NULL,
      PRIMARY KEY (`NUMERO_AVION`, `DEPART`),
    ) ENGINE=InnoDB;
    • NUMERO_AVION : identifie l'avion (clé)
    • DEPART : l'heure du départ du vol (clé)
    • ARRIVEE : l'heure d'arrivé du vol


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    NUMERO_AVION       DEPART              ARRIVEE
    ------------ ------------------- -------------------
          1      2010-04-28 11:00:00 2010-04-28 12:00:00
          1      2010-04-28 14:00:00 2010-04-28 15:00:00
          2      2010-04-28 11:30:00 2010-04-28 12:45:00
    Comme vous le voyez ici, on peut dire que l'avion numéro 1 a passé 2h sur terre avant de s'envoler de nouveau.
    Car ligne1.arrivee-ligne2.depart = 2h

    Voilà... comment créer cette requête ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Essaie la requête suivante (sans garantie, je n'ai pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT a.numero_avion, a.arrivee
    , TIMEDIFF((
      SELECT MIN(a2.depart)
      FROM agenda a2
      WHERE a2.numero_avion = a.numero_avion
      AND a2.depart > a.arrivee
    ), arrivee)
    FROM agenda a
    ORDER BY a.numero_avion, a.arrivee
    ced

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Ok j'ai essayé et ça me retourne quelques résultats. Je vais essayer d'approfondir parce que certains avions n'ont qu'un seul vol etc... merci pour l'aide !!!!

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

Discussions similaires

  1. accès concurrents entre 2 services distincts sur une même table
    Par grinder59 dans le forum Développement
    Réponses: 3
    Dernier message: 26/08/2011, 12h57
  2. Réponses: 3
    Dernier message: 31/05/2011, 21h24
  3. [AC-2007] Opération entre cellule dans une même table
    Par Mat08 dans le forum Modélisation
    Réponses: 4
    Dernier message: 05/08/2009, 09h17
  4. Réponses: 3
    Dernier message: 14/06/2009, 00h14
  5. Réponses: 2
    Dernier message: 15/12/2008, 09h09

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