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 :

[SQL] erreur sur WIHT JOIN


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 [SQL] erreur sur WIHT JOIN
    Bonjour,
    je voulais faire une requête qui consiste à recupérer toutes les occurences qui ce répète plus de 4 fois dans les 6 derniers mois dans le journal de banque avec éventuellement un critère de montant j'ai donc fais cette requette:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WITH SELECTION AS (SELECT MAX(ID) FROM COMPTABILITE 
    WHERE "DATE" BETWEEN 'debut' AND 'fin' AND JOURNAL LIKE 'BQ%' 
    AND LEFT(NCOMTE, 1) = '4'
    GROUP BY CREDIT HAVING Count(CREDIT) > 4 ) 
    SELECT C.ID, C."DATE", C.NCOMTE, COALESCE(C.LIBCOMPTE, ''), COALESCE(C.LIBOPER, ''), COALESCE(C.NPIECE, ''), COALESCE(C.CREDIT, ''), COALESCE(C.DEBIT, '')
    FROM COMPTABILITE C JOIN SELECTION S ON C.ID = S.ID
    je sais déjà que "DATE" c'est pas bien...
    que coalescence ces pas bien mais j'ai besoin d'une valeur non null
    je fais ma requête dans une procédure VBA...

    quand je lance la requête j'ai une erreur:

    SQL error code = -104
    Invalid command
    no column name specified for column number 1 in derived table <unnamed>

    si quelqu'un peu m'aider Grand MERCI

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Une première remarque, pour éviter la multitude de COALESCE, il serait préférable de prévoir dans les colonnes de tes tables une valeur par défaut '' ou 0 suivant l'affectation de la colonne.

    Pour ton code, il me semble nécessaire d'affecter MAX(id)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WITH SELECTION AS (SELECT MAX(ID) AS vId FROM COMPTABILITE 
    WHERE "DATE" BETWEEN 'debut' AND 'fin' AND JOURNAL LIKE 'BQ%' 
    AND LEFT(NCOMTE, 1) = '4'
    GROUP BY CREDIT HAVING Count(CREDIT) > 4 ) 
    SELECT C.ID, C."DATE", C.NCOMTE, COALESCE(C.LIBCOMPTE, ''), COALESCE(C.LIBOPER, ''), COALESCE(C.NPIECE, ''), 
        COALESCE(C.CREDIT, 0), COALESCE(C.DEBIT, 0)
    FROM COMPTABILITE C JOIN SELECTION S ON C.ID = S.vID
    La partie est-il utile dans ta requête ?

    La modification suivant ne fonctionne pas ?

    A+

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Pour la forme, la syntaxe est incorrecte comme le dit le message d'erreur:
    SQL error code = -104
    Invalid command
    no column name specified for column number 1 in derived table <unnamed>
    Il faut définir les colonnes de l'expression CTE (Common Table Expression), c.a.d. :
    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
    18
    19
    20
    21
    22
    23
    WITH SELECTION(ID) AS 
    (
        SELECT 
          MAX(ID)
        FROM COMPTABILITE 
        WHERE "DATE" BETWEEN 'debut' AND 'fin' -- avec les bonnes expressions...
          AND JOURNAL LIKE 'BQ%' 
          AND LEFT(NCOMTE, 1) = '4'
          -- AND NCOMTE LIKE '4%' -- par souci d’homogénéité syntaxique
        GROUP BY CREDIT 
        HAVING COUNT(CREDIT) > 4 -- HAVING COUNT(*) > 4 -- valable aussi
    ) 
    SELECT
      C.ID, 
      C."DATE", 
      C.NCOMTE, 
      COALESCE(C.LIBCOMPTE, ''), 
      COALESCE(C.LIBOPER, ''), 
      COALESCE(C.NPIECE, ''), 
      COALESCE(C.CREDIT, ''), 
      COALESCE(C.DEBIT, '')
    FROM COMPTABILITE C 
    JOIN SELECTION S ON C.ID = S.ID
    Pour le fond, avec un jeu d'essai, c'eut été mieux et cela aurait complété l’énoncé :
    Citation Envoyé par vience Voir le message
    je voulais faire une requête qui consiste à recupérer toutes les occurences qui ce répète plus de 4 fois dans les 6 derniers mois dans le journal de banque avec éventuellement un critère de montant
    --
    Philippe.
    Philippe.

  4. #4
    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
    merci a vous pour cette réponse.

    en effet j'avais compris qu'il fallait mettre un nom a la colonne comme le disais le msg d’erreur mais je sais pas ou mettre ce nom...

    en vous remerciant

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

Discussions similaires

  1. [SQL] erreur sur requête insert
    Par temperature dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/01/2008, 15h27
  2. [SQL] Erreur sur Querydefs
    Par Zawawi dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/11/2007, 14h19
  3. [SQL] Erreur sur une requète avec un Like
    Par heruwenli dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/05/2007, 14h29
  4. [SQL] Erreur sur un Delete en sql via php
    Par speed034 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/05/2007, 16h18
  5. Réponses: 1
    Dernier message: 06/10/2005, 10h09

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