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

SQL Firebird Discussion :

select * from compta where sum = variable


Sujet :

SQL Firebird

  1. #1
    Membre à l'essai
    Profil pro
    ARTISAN
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : ARTISAN
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut select * from compta where sum = variable
    Bonjour,

    je m’explique:

    je recherche tous les enregitrements de ma base de donnée compta si la somme (goupé par piece) du debit ou du credit est egale a ma variable

    je suis parti sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT ID, ""DATE"", NCOMTE, COALESCE(LIBCOMPTE, ''), JOURNAL, COALESCE(NPIECE, ''), COALESCE(LIBOPER, ''),COALESCE(CREDIT, ''), COALESCE(DEBIT, '') 
     
    FROM COMPTABILITE 
     
    GROUP BY ""DATE"", NCOMTE, LIBCOMPTE, NPIECE, CREDIT, DEBIT
     
    HAVING ""DATE"" BETWEEN DATE1 and date2
     
     AND SUM(CREDIT) = VARIABLE OR SUM(DEBIT)  = VARIABLE
    est il possible de trouver cette requete?
    Quelqu'un a une idée?

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Bonjour

    Bon c'est pas gagné là ! Cette requête ne s'exécute certainement pas.
    Il me semble qu'il vous manque quelques notions de base du SQL. Cette remarque n'est pas un reproche bien entendu.

    Il existe sur la toile des tonnes d'articles et de tutoriels sur ce sujet. Donc...

    La requête (construite à la volée, sans test) pourrait être:
    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
    SELECT
      C1.*
    FROM
      COMPTABILITE C1
    WHERE EXISTS (
      SELECT C2.ID, C2.NPIECE
      FROM COMPTABILITE C2
      WHERE
        C1.ID = C2.ID AND
        C2.MA_DATE BETWEEN :DATE1 AND :DATE2
      GROUP BY
        C2.ID,
        C2.NPIECE
      HAVING 
        SUM(C2.CREDIT) = :VALEUR OR SUM(C2.DEBIT) = :VALEUR
    )
    Je ramène toutes les colonnes de la table, à vous de sélectionner celles pertinentes.
    Vos COALESCE(F, '') me semble inutiles.
    Et enfin nommer une colonne DATE est à proscrire absolument, DATE est un mot-clé réservé du SQL.

    @+ Claudius

  3. #3
    Membre à l'essai
    Profil pro
    ARTISAN
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : ARTISAN
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    merci pour cette reponse rapide et desoler pour mon sql...
    je suis pas informatien je suis couvreur

    j'ai test la commande, elle marche mais elle ne retourne pas tout ce que je chercher:

    exemple

    piece debit credit
    a1 4.75
    a1 25.25
    a1 30

    je voudrai que ca me retourne les trois ligne car 4.75+25.25 = 30 et 30 = 30

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par vience Voir le message
    merci pour cette reponse rapide et desoler pour mon sql...
    je suis pas informatien je suis couvreur
    Raison de plus pour ne pas être désolé. Et pour inverser les rôles je me vois mal grimper sur mon toit en ardoise.

    Reprenons.
    Citation Envoyé par vience Voir le message
    j'ai test la commande, elle marche mais elle ne retourne pas tout ce que je chercher
    En théorie cette requête devrait vous renvoyer toutes les lignes.
    Je ne suis pas sûr de bien comprendre votre besoin.

    @+ Claudius.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Comme je préfère les CTE (cela dépend de la version de Firebird)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH SELECTION AS ( SELECT NPIECE
      FROM COMPTABILITE
      WHERE
        MA_DATE BETWEEN :DATE1 AND :DATE2
      GROUP BY   NPIECE
      HAVING 
        SUM(CREDIT) = :VALEUR OR SUM(DEBIT) = :VALEUR
     )
     
    SELECT C.* FROM COMPTABILITE C JOIN SELECTION S ON 
    C.NPIECE=S.NPIECE
    mais cela équivaut quasi au code de Cl@udius la seule différence est en fait dans la liaison entre C1 et C2 , Cl@udius l'a proposé sur l'id de l'écriture au lieu de la pièce donc le même code

    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
    SELECT
      C1.*
    FROM
      COMPTABILITE C1
    WHERE EXISTS (
      SELECT C2.NPIECE
      FROM COMPTABILITE C2
      WHERE
        C1.NPIECE = C2.NPIECE AND
        C2.MA_DATE BETWEEN :DATE1 AND :DATE2
      GROUP BY
        C2.NPIECE
      HAVING 
        SUM(C2.CREDIT) = :VALEUR OR SUM(C2.DEBIT) = :VALEUR
    )
    @Cl@udius non seulement tu n'es pas couvreur mais comme ton serviteur tu sembles porter à la 'com'ptabilité un intérêt d'informaticien
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre à l'essai
    Profil pro
    ARTISAN
    Inscrit en
    Février 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : ARTISAN
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    merci SergioMaster

    la première solution fonctionne parfaitement!

    j'espère que je vais pourvoir retrouver toute mes opérations!!!

    et encore merci a vous deux

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par vience Voir le message
    la première solution fonctionne parfaitement!
    ...
    et encore merci a vous deux
    Super

    @+

    @Serge
    @Cl@udius non seulement tu n'es pas couvreur mais comme ton serviteur tu sembles porter à la 'com'ptabilité un intérêt d'informaticien
    Tout ce qui couvre l'informatique m'intéresse.

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

Discussions similaires

  1. select from table where in
    Par lcaya dans le forum SQL
    Réponses: 5
    Dernier message: 10/03/2010, 17h50
  2. Special query SELECT * FROM CASE WHERE ORDER
    Par WildGroup dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/06/2009, 21h17
  3. REQUETE SQL : SELECT * FROM annonce WHERE ..
    Par gregmarty dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/01/2008, 21h52
  4. Select from table where
    Par kabalonda dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/07/2007, 17h43
  5. SELECT * FROM xx WHERE yy AND zz AND tt AND
    Par french-petzouille dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/03/2007, 09h52

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