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 :

requete par date


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut requete par date
    bonjour, j'aurais besoin de votre aide pour une requete.
    j'ai les tables suivantes
    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
    22
    23
    produit
    ----------
    idproduit*
     
     
    livraison
    -------------
    idlivraison*
    idfournisseur
     
     
    livprod
    ----------
    idlivprod*
    idproduit
    dateliv
    idlivraison
     
     
    fournisseur
    --------------
    idfournisseur*
    leadtime
    Je dois recuperer les leadtime pour chaque produit sachant qu'il faut uniquement considerer la derniere dateliv du produit pour recuperer son fournisseur.
    Donc, je dois avoir au final une table comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    idproduit | leadtime
    --------------------
    12345     | 3
    14215     | 1
    21752     | 2
    Mes questions sont:
    - est-ce possible d'avoir ces resultats en une seule requete?
    - si oui, pouvez vous soit me la donner, soit m'aiguiller?

    merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 138
    Par défaut
    Citation Envoyé par keil
    Mes questions sont:
    - est-ce possible d'avoir ces resultats en une seule requete?
    - si oui, pouvez vous soit me la donner, soit m'aiguiller?
    Ça doit donner quelque chose comme ça :

    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
    SELECT  prd.idproduit
        ,   frn.leadtime
    FROM
            produit AS  prd
        INNER JOIN
            livprod AS  lip
            ON  prd.idproduit = lip.idproduit
        INNER JOIN
            livraison   AS liv
            ON  lip.idlivraison = liv.idlivraison
        INNER JOIN
            fournisseur AS frn
            ON  liv.idfournisseur = frn.idfournisseur
    WHERE
            lip.dateliv = 
                (   SELECT  MAX(dat.dateliv)
                    FROM    livprod AS dat
                    WHERE   dat.idproduit = prd.idproduit
                )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut
    oui, mais je me suis mal exprimé, quand je disais une seule requete, je voulais dire une requete sans sous requete.

    mais simplifions le probleme:
    considerons juste la table livprod

    est-ce possible d'avoir la liste des produits et leur derniere dateliv sans avoir de "LIMIT 1" dans la requete

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 138
    Par défaut
    Citation Envoyé par keil
    oui, mais je me suis mal exprimé, quand je disais une seule requete, je voulais dire une requete sans sous requete.
    Ça me semble beaucoup plus difficile.

    Citation Envoyé par keil
    mais simplifions le probleme:
    considerons juste la table livprod
    est-ce possible d'avoir la liste des produits et leur derniere dateliv sans avoir de "LIMIT 1" dans la requete
    Ça c'est une simple requête de regroupement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  idproduit
        ,   MAX(dateliv)
    FROM    livprod
    GROUP BY    idproduit
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut
    ok, merci de la rep.
    dans la mesure ou j'utilise une version de mysql qui ne gere pas les sous requetes, est-ce possible de creer une fonction sql (create function) qui me permet d'avoir la date max pour un idproduit parametré?

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 138
    Par défaut
    Après réflexion, tu peux aussi essayer ça :
    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
    22
    23
    SELECT  prd.idproduit
        ,   frn.leadtime
    FROM
            produit AS  prd
        INNER JOIN
            livprod AS  lip
            ON  prd.idproduit = lip.idproduit
        INNER JOIN
            livraison   AS liv
            ON  lip.idlivraison = liv.idlivraison
        INNER JOIN
            fournisseur AS frn
            ON  liv.idfournisseur = frn.idfournisseur
        INNER JOIN
            livprod AS dat
            ON  prd.idproduit = dat.idproduit
    GROUP BY
            prd.idproduit
        ,   frn.leadtime
        ,   lip.dateliv
    HAVING
            lip.dateliv = MAX(dat.dateliv)
    ;
    Mais ce sera beaucoup plus lourd qu'avec une sous-requête...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. Sqlite requete par date specifique
    Par linked dans le forum Android
    Réponses: 1
    Dernier message: 08/01/2014, 01h09
  2. requete par date
    Par naje83 dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/03/2007, 18h17
  3. requete : tri par date + groupement
    Par cbe dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/01/2006, 20h30
  4. Trier mes requete par date au format dd/mm/yy
    Par danje dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/09/2005, 19h06
  5. Réponses: 5
    Dernier message: 29/09/2004, 12h05

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