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 :

Recuperer informations avec une date passée


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Recuperer informations avec une date passée
    Bonjour à tous,

    Je realise pour mon entreprise une BDD pour l'inventaire.

    J'ai créer ma table inventaire avec comme champs:

    id_inventaire
    date_inventaire
    qte_inventaire
    id_matiere

    Et je voudrait savoir sil il est possible de réaliser une requête sql qui permettrait de récupérer la qte_inventaire de la précédente date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT code_m, nom_m, cond_m, unite_conditionnement, pu_m, qte_inventaire_mat 
    FROM inventaire_mat, matiere  
    INNER JOIN conditionnement ON conditionnement.id_conditionnement=matiere.id_conditionnement  
    INNER JOIN fournisseur ON fournisseur.id_four=matiere.id_four  
    LEFT JOIN matiere_type ON matiere.id_matiere_type=matiere_type.id_matiere_type  
    WHERE matiere.id_matiere_type= '1' AND date_inventaire_mat <=NOW();
    Donc on va chercher les infos qu'on désire et je voudrait récupérer la qte_inventaire de la date précédente pour les affiche après dans une page web.

    inventaire réaliser le 01-02-2008 , 02-03-2008 et nous réalisons l'inventaire du 01-04-2008 , je voudrait qu'il m'affiche seulement les qte pour chaque matière du 02-03-2008

    Est-ce possible? Quelqu'un pourrait-il m'aiguiller?

    Merci d'avance pour votre aide

    guigui69

  2. #2
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Le plus compliqué dans ton cas est de récupérer l'avant dernière date de ton inventaire. Essaye la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT MIN(date_inventaire) 
    FROM 
     (
      SELECT date_inventaire
      FROM inventaire
      ORDER BY date_inventaire DESC 
      LIMIT 2
     ) as SELECT_DATE
    Ensuite tu injectes cette requete dans la tienne :
    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
     
    SELECT code_m, nom_m, cond_m, unite_conditionnement, 
               pu_m, qte_inventaire_mat 
    FROM inventaire_mat, matiere,
    (SELECT MIN(date_inventaire) 
    FROM 
     (
      SELECT date_inventaire
      FROM inventaire
      ORDER BY date_inventaire DESC 
      LIMIT 2
     ) as SELECT_DATE) as SELECT_DATE_MIN
    INNER JOIN conditionnement ON    conditionnement.id_conditionnement=matiere.id_conditionnement  
    INNER JOIN fournisseur ON fournisseur.id_four=matiere.id_four  
    LEFT JOIN matiere_type ON matiere.id_matiere_type=matiere_type.id_matiere_type  
    WHERE matiere.id_matiere_type= '1' 
    AND date_inventaire_mat = SELECT_DATE_MIN. date_inventaire;
    Ca va pas marcher du premier coup mais je pense que cette piste est a exploiter.

  3. #3
    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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT MIN(date_inventaire) 
    FROM 
     (
      SELECT date_inventaire
      FROM inventaire
      ORDER BY date_inventaire DESC 
      LIMIT 2
     ) as SELECT_DATE
    Plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT date_inventaire
    FROM inventaire
    ORDER BY date_inventaire DESC
    LIMIT 1, 1
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Citation Envoyé par ced Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT date_inventaire
    FROM inventaire
    ORDER BY date_inventaire DESC
    LIMIT 1, 1
    ced
    Avec cette méthode, on va seulement récupérer la plus grande date dans la table non ?
    Or, et si j'ai bien compris le sujet, dans sa table il y a les dates du 02-03-2008 et du 01-04-2008 et on doit récupérer la date 02-03-2008.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Merci je regarde ca et je reply . Ce que je cherche a récupérer a la date précédent (passé).

    Merci pour votre aide

    guigui69

  6. #6
    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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Citation Envoyé par nounetmasque Voir le message
    Avec cette méthode, on va seulement récupérer la plus grande date dans la table non ?
    Or, et si j'ai bien compris le sujet, dans sa table il y a les dates du 02-03-2008 et du 01-04-2008 et on doit récupérer la date 02-03-2008.
    Justement... D'abord, si il y a plusieurs produits dans la table inventaire, la même date d'inventaire peut être répétée plusieurs fois. D'où le DISTINCT .
    Ensuite, pour ne ramener que l'avant-dernier jour, c'est-à-dire la deuxième ligne de la requête, c'est bien LIMIT 1,1. C'est la subtilité de LIMIT : il commence son index de lignes à 0. Donc la deuxième ligne est numérotée 1 et je ne ramène qu'une seule ligne .

    Voilà le pourquoi de ma requête .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Citation Envoyé par ced Voir le message
    C'est la subtilité de LIMIT : il commence son index de lignes à 0.
    Merci pour cette explication, je comprends mieux

Discussions similaires

  1. Problème avec une date !!
    Par pilz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/04/2006, 11h35
  2. probleme avec une date
    Par somatino dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/03/2006, 15h56
  3. [JDBC] Requête avec une date sous la forme dd/MM/yyyy
    Par sylviefrfr dans le forum JDBC
    Réponses: 6
    Dernier message: 12/11/2005, 09h35
  4. Réponses: 2
    Dernier message: 16/08/2005, 15h33
  5. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30

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