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 :

[MySQL] Gestion du temps (location de matériel)


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 236
    Points : 113
    Points
    113
    Par défaut [MySQL] Gestion du temps (location de matériel)
    Salut à tous,

    Ma base de données est relative à un systeme de location de matériel.

    Une table contient les commandes avec les details, notemment la date de debut de la location , la date de fin de location et le lieu de la location.

    Il y a aussi une clef étrangère qui renvoit vers la table matériel avec l identifiant du matos concerné.

    Dans l'intranet on affiche les locations en cours (date courante < date de fin location et date de debut location < date courante):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM <les tables>
    WHERE <jointures>
    AND location.date_retour > curdate( )
    AND curdate( ) > location.date_debut
    Je voudrais pouvoir afficher aussi dans une colonne, le lieu de la prochaine location.
    Pour le moment j'arrive à faire une requete mais qui affiche toutes les prochaines locations. Je ne sais pas comment avoir seulement la prochaine (celle qui a la date de début la plus "petite")

    J'ai pensé utiliser un GROUP BY ave un HAVING mais je n'arrive pas à tourner ma requete...

    Une idée ?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    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 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Pour connaître l'identifiant de la prochaine location :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT  courante.id_location    
        ,   prochaine.id_location
    FROM    location    AS courante
        INNER JOIN
            location    AS prochaine
            ON  courante.id_matos = prochaine.id_matos
    WHERE   CURRENT_DATE BETWEEN courante.date_debut AND courante.date_fin
        AND prochaine.date_debut = 
                (   SELECT  MIN(date_debut)
                    FROM    location
                    WHERE   courante.id_matos = location.id_matos
                        AND courante.date_fin < location.date_debut    
                )
    ;

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 236
    Points : 113
    Points
    113
    Par défaut
    Salut,

    La table location est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LOCATION
    id_loc
    date_debut_loc
    date_fin_loc
    lieu_loc
    #id_matos
    Et la table du matriel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MATERIEL
    id_matos
    ...
    Je vais faire le boulet mais tu pourrais me refaire ton exemple avec ces identifiants , car je n'arrive pas bien à suivre l'exmple précédent

    Merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    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 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par EvilAngel
    Je vais faire le boulet mais tu pourrais me refaire ton exemple avec ces identifiants , car je n'arrive pas bien à suivre l'exmple précédent
    Sous les alias courante et prochaine, tu as accès à la totalité des colonnes de location pour la location en cours et pour la location suivante d'un matériel quelconque.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 236
    Points : 113
    Points
    113
    Par défaut
    Je suis sous MySQL.
    Ca donnerait un truc du genre et ?

    Merci

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    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 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par EvilAngel
    Je suis sous MySQL.
    Ca donnerait un truc du genre et ?

    Merci
    courante et prochaine sont des alias au nom de table d'origine...
    Comme j'utilise trois fois la même table dans la requête, je suis obligé de donner un nom différent à chaque occurence pour ne pas les confondre.
    J'aurais pu les nommer chou et carotte ; ça donnerait le même résultat, seulement ç'aurait été moins lisible

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Points : 37
    Points
    37
    Par défaut
    Tu peux faire une sous requete pour la prochaine date avec une condition qu'il te remonte qu'une seule date ( TOP 1). je pense que ce serait plus simple dans ton cas plutot que passer par une jointure

  8. #8
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 236
    Points : 113
    Points
    113
    Par défaut
    Merci pour ces conseils.

    Kashue tu pourrais me mettre un morceau de code ? Merci

  9. #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    236
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 236
    Points : 113
    Points
    113
    Par défaut
    Dsl je n'ai pas repondu avant.
    Ca m'a pris un petit bout de temps de comprendre l'exemple de al1_24 avec mes connaissances sqliennes.
    Ce code marche superbement bien !

    J'ai une requete un peu plus compliquee, d'apres moi à faire.
    Le probleme en francais: je voudrais connaitre l'ensemble du matos (id) qui est disponible à la reservation à une date t et pendant les X semaines suivantes.

    Je m'explique, un client peut demander du materiel a partir du 1er janvier 2007 pour les 8 semaines suivantes.

    Comment savoir quel matériel est dispo le 1er janvier et les 8 semaines suivantes ?

    Merci

Discussions similaires

  1. [MFC] Gestion du temps
    Par Kevgeii dans le forum MFC
    Réponses: 7
    Dernier message: 02/07/2005, 14h21
  2. Aide pour l'analyse d'un problème de gestion de temps
    Par PAINCO dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 03/06/2005, 15h49
  3. [VB.NET] Gestion en temps réel d'une bdd access
    Par qwiskas dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/02/2005, 19h37
  4. Administration MySQL gestion des utilisateurs
    Par MaxiMax dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2004, 13h56
  5. fonction de gestion du temps
    Par fati dans le forum C
    Réponses: 5
    Dernier message: 26/12/2002, 16h32

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