Requête MySQL
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Requête MySQL



  1. #1
    invite948b37db

    Requête MySQL


    ------

    Bonsoir
    J'ai une table ainsi constituée :
    facture statut montant
    100 émise 1000
    100 annulée 1000
    101 émise 150
    102 émise 300

    J'ai besoin d'une requête qui me donne la situation par facture.
    Pour une même facture, il faut soustraire le montant annulé du montant émis, si il y a lieu.
    J'ai déjà écrit beaucoup de requêtes SQL, mais là, je sèche !
    J'ai bien tenté un update qui multiplie les montants annulés par -1 et faire ensuite la somme par facture (group by facture) mais le résultat obtenu est incohérent.
    D'autre part, je voudrais éviter de modifier cette table car cela perturberait d'autres requêtes qui elles, fonctionnent !
    Merci de votre aide.

    -----

  2. #2
    invite2648d0a4

    Re : Requête MySQL

    Code:
    SELECT facture ,  sum( IF(statut = "annulée", -montant ,montant ))  as reste  from facture group by facture;
    donne:

    +---------+-------+
    | facture | reste |
    +---------+-------+
    | 100 | 0 |
    | 101 | 150 |
    | 102 | 300 |
    +---------+-------+

  3. #3
    invite948b37db

    Re : Requête MySQL

    Citation Envoyé par hysos Voir le message
    Code:
    SELECT facture ,  sum( IF(statut = "annulée", -montant ,montant ))  as reste  from facture group by facture;
    Bonjour et merci pour cette réponse.
    N'étant pas sur site, je ne pourrai tester que demain.
    Je ne savais pas que l'on pouvait utiliser IF à l'intérieur d'une fonction comme sum() et ça va sans doute m'aider beaucoup pour cette requête et pour d'autres..
    J'ai cependant un doute, mais seulement un doute puisque non testé, sur la position de la parenthèse fermante du IF.
    Personnellement, je l'aurais mise après -montant.
    J'en saurai plus demain !
    encore merci.

  4. #4
    invite0bbe92c0

    Re : Requête MySQL

    Citation Envoyé par cherbe Voir le message
    Bonjour et merci pour cette réponse.
    N'étant pas sur site, je ne pourrai tester que demain.
    Je ne savais pas que l'on pouvait utiliser IF à l'intérieur d'une fonction comme sum()
    Cela parait être une bizarrerie MySql (une de plus ....).

    En SQL standard, on utiliserait le CASE ici.

  5. A voir en vidéo sur Futura
  6. #5
    invite948b37db

    Re : Requête MySQL

    Citation Envoyé par hysos Voir le message
    Code:
    SELECT facture ,  sum( IF(statut = "annulée", -montant ,montant ))  as reste  from facture group by facture;
    Bonjour
    Effectivement, ça fonctionne tel quel.
    Merci tout plein !

  7. #6
    invite2648d0a4

    Re : Requête MySQL

    Citation Envoyé par cherbe Voir le message
    Effectivement, ça fonctionne tel quel.
    Avec MySql. Attention : Ne fonctionne pas sur PostgreSql, etc.............

  8. #7
    invite0bbe92c0

    Re : Requête MySQL

    Citation Envoyé par hysos Voir le message
    Avec MySql. Attention : Ne fonctionne pas sur PostgreSql, etc.............
    En effet, cf. mon message #4 au dessus.

Discussions similaires

  1. Requête SQL
    Par invite7cd2b282 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 12/08/2013, 18h52
  2. sql requete
    Par invite53af088b dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 13/02/2013, 19h28
  3. Mysql probleme requete sql
    Par johny005 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 15/12/2011, 19h56
  4. [Divers] requete
    Par invite175318a0 dans le forum Dépannage
    Réponses: 0
    Dernier message: 25/01/2008, 21h58
  5. requête SQL
    Par inviteafd8fc22 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 07/01/2008, 17h02