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

Requête MySQL



  1. #1
    cherbe

    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
    hysos

    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
    cherbe

    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
    Bluedeep

    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.
    Dernière modification par Bluedeep ; 02/03/2015 à 13h55.

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

    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 !
    Dernière modification par cherbe ; 04/03/2015 à 12h17.

  7. #6
    hysos

    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
    Bluedeep

    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 Theophane dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 12/08/2013, 18h52
  2. sql requete
    Par aminaa 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 enebre 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