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 :

Souhaite ressortir les articles en stock à 0


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut Souhaite ressortir les articles en stock à 0
    bonjour,

    j'effectue la requête SQL suivante pour sortir tous les articles dont les stocks pour tous les magasins valent 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT articles.intitule, articles.id, catalogue_fournisseurs.id AS id_cat, aarcode_article, tva, stock_initial, stock_recalcule 
    FROM articles 
    INNER JOIN catalogue_fournisseurs ON id_article=articles.id 
    WHERE 1 
      AND articles.id='10318' 
      AND articles.date_archivage='0000-00-00 00:00:00' 
    ORDER BY aarcode_article ASC
    Pour mon article 10318, il me ressort le tableau suivant où sur l'un des magasin, j'ai un stock d'une unité.

    intitule id id_cat aarcode_article tva stock_initial stock_recalcule
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73112 2-AX400FM/STR 19.6 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73113 2-AX400FM/STR 19.6 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73114 2-AX400FM/STR 19.6 0 1
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73115 2-AX400FM/STR 19.6 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73116 2-AX400FM/STR 19.6 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73117 2-AX400FM/STR 8.5 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73118 2-AX400FM/STR 8.5 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73119 2-AX400FM/STR 0 0 0
    SB LTD AX400FM ROUGE TRANSP 2-AX400FM/STR 10318 73120 2-AX400FM/STR 19.6 0 0
    Quel critère mettre pour exclure cette article du résultat de requête, car je ne veux que les articles dont le stock_recalcule est à 0 pour tous les magasins.

    J'ai essayé avec
    HAVING stock_recalcule='0'
    mais il me sort toujours cet article.

    Merci de votre aide.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    HAVING ne s'emploie qu'avec un GROUP BY.

    Dans ton cas, un WHERE devrait suffire mais j'ai un doute sur l'interprétation de ton besoin :
    tous les articles dont les stocks pour tous les magasins valent 0
    Comme ta requête a une condition sur l'identifiant de l'article, elle ne sort pas "tous les articles" !

    Si ta phrase signifie que tu veux les articles pour lesquels il n'existe aucun stock différent de zéro, il faut utiliser NOT EXISTS.
    Dans quelle table figurent la colonne "stock_recalcule" ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    J'ai rajouté à ma requête un HAVING pour qu'il me sorte uniquement les stocks égal à 0 pour la somme de tous les magasins.
    [code]HAVING SUM(stock_recalcule)='0'[/codte]


    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT articles.intitule, articles.id, catalogue_fournisseurs.id AS id_cat, aarcode_article, tva, stock_initial, stock_recalcule 
    FROM articles 
    INNER JOIN catalogue_fournisseurs ON id_article=articles.id 
    WHERE 1 
      AND articles.id='10318' 
      AND articles.date_archivage='0000-00-00 00:00:00' 
      GROUP BY id_article
      HAVING SUM(stock_recalcule)='0'
    ORDER BY aarcode_article ASC

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Attention ! Votre requête est acceptée par le mauvais MySQL mais toutes les colonnes du SELECT ne faisant pas l'objet d'une fonction de groupage doivent figurer dans le GROUP BY sous peine de voir des valeurs aléatoires pour les colonnes manquantes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Lister les x premiers articles en stock selon un critère
    Par dcpc007 dans le forum Requêtes
    Réponses: 22
    Dernier message: 15/12/2010, 16h27
  2. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 22h00
  3. Donnez votre avis sur les articles de Developpez
    Par Anomaly dans le forum Contribuez
    Réponses: 37
    Dernier message: 29/05/2006, 21h48
  4. Ne pas imprimer les articles avec stock zéro
    Par 810mcu dans le forum Bases de données
    Réponses: 10
    Dernier message: 23/12/2005, 12h15

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