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 :

Erreur "Token unknown insert" sur commande sql


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut Erreur "Token unknown insert" sur commande sql
    Bonjour à tous,

    J'ai ce code sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    insert into red (cas,dat,clt,fou,dep,rec,des)
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select first 1 desf from ach a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select first 1 descl from ven v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    ) select * from c;
    que j'ai voulu améliorer pour réduire la durée d'exection qui est à peu prés dans les 30 secondes. Alors j'ai modifié le code comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with c as 
    (select ana,desf from ach)
    insert into red (cas,dat,clt,fou,dep,rec,des)
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select desf from c a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select desf from c v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    ) select * from c;
    mais le code ne s'exécute pas , il signale erreur "Token unknown insert"

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 131
    Points : 38 549
    Points
    38 549
    Billets dans le blog
    9
    Par défaut
    bonsoir,

    Deux CTE portent le même nom "c"

    Et aussi, l'absence d'espace après les virgules peuvent parfois causer des erreurs

    Les retours à la ligne n'étant pas facturés, il est bon de les utiliser, ça facilite la lecture et la maintenance des requêtes

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    bonjour,
    faute de frappe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    with a as 
    (select ana,desf from ach)
     
    insert into red (cas,dat,clt,fou,dep,rec,des)
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select desf from a a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select desf from a v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    ) select * from c;
    toujours la même erreur.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Déjà j'aurai mis la CTE avant le insert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with c as (
    select 2 as cas,DAT,null as clt,ANA as fou,null as rec,VER as dep,(select first 1 desf from ach a where (a.ANA=p.ANA)) as des  from PAF p where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0))
    union all 
    select 2 as cas,DAT,ANA as clt,null as fou,VER as rec,null as dep,(select first 1 descl from ven v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C
    de plus un ((VER>0)or(VER<0)) n'est-ce pas un VER<>0

    Ensuite je suis loin d'être un fan des select imbriqués ni d'un first 1 surtout lorsqu'il n'y a pas de clause ORDER BY , à mon avis d'autres CTE et des jointures seraient mieux
    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
     
    with 
    ac as (SELECT ANA,MAX(DESF) desf FROM ACH GROUP BY ANA), 
    ve as (SELECT ANA,MAX(DESCL) desf FROM VEN GROUP BY ANA),
    c as (select 2 as cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and VER<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,v.VER as rec,null as dep,ve.descl des
           from ven v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and v.VER<>0 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C
    Tout cela en espérant que des index aient été créés pour, je cite "pour réduire la durée d'execution"

    Cela étant sans description des tables (comme d'habitude on n'a que le quart des informations ) ...
    Je trouve qu'un code, certainement analytique ne soit pas dans une table et, étrange de devoir aller à la pêche de la désignation dans les tables VEN(tes) et ACH(ats) !
    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

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 131
    Points : 38 549
    Points
    38 549
    Billets dans le blog
    9
    Par défaut
    Toujours pas d'effort de mise en forme des requêtes et il y des parenthèses inutiles.
    Tout ça ne donne pas beaucoup envie de vous aider.

    Cela étant, êtes vous certain que les requêtes imbriquées ne produisent qu'un seul résultat ?
    Je plussoie quand au test and (VER>0 or VER<0).

    Voici ce que j'appelle une requête mise en forme

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    with a as 
        (select ana
              , desf 
         from ach
        )
     
    insert into red 
          (cas, 
           dat,
           clt,
           fou,
           dep,
           rec,
           des
          )
     
    with c as 
        (select 2 as cas
              , DAT
              , null as clt
              , ANA as fou
              , null as rec
              , VER as dep
              , (select desf 
                 from a a 
                 where a.ANA=p.ANA
                ) as des 
         from PAF p 
         where ANA<>'00000' 
           and MOP='ESPECE' 
           and (VER>0 or VER<0)
     
         union all
     
         select 2 as cas
              , DAT
              , ANA as clt
              , null as fou
              , VER as rec
              , null as dep
              , (select desf 
                 from a v 
                 where v.ANA=p.ANA
                ) as des 
         from PAC P 
         where ANA<>'00000' 
           and MOP='ESPECE' 
           and (VER>0 or VER<0)
         ) 
    select * from c;

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    sergio,
    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
     
    with 
    ac as (SELECT ANA,MAX(DESF) desf FROM ACH GROUP BY ANA), 
    ve as (SELECT ANA,MAX(DESCL) desf FROM VEN GROUP BY ANA),
    c as (select 2 as cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and VER<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,v.VER as rec,null as dep,ve.descl des
           from ven v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and v.VER<>0 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C
    DESF est varchar.
    Et même en modifiant votre proposition comme ceci
    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
     
    with 
    ac as (SELECT ANA,DESF FROM ACH GROUP BY ANA,DESF), 
    ve as (SELECT ANA,DESCL FROM VEN GROUP BY ANA,DESCL),
    c as (select 2 as, cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and VER<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,v.VER as rec,null as dep,ve.descl des
           from ven v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and v.VER<>0 
    )
    insert into red (cas,dat,clt,fou,dep,rec,des) SELECT * FROM C
    il signale toujours la même erreur.


    escartefigue , pareil le même message.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Ligne 5 : select 2 as, cas, sera certainement mal compris par l'interpréteur.

    Y a-t-il un code attaché à ce message d'erreur ?
    Que dit la documentation sur ce code d'erreur ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    DESF est varchar.
    Et alors ? rien n'empêche de faire un MAX sur des varchars

    Et même en modifiant votre proposition comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    with 
    ac as (SELECT ANA,DESF FROM ACH GROUP BY ANA,DESF), 
    ...
    Surtout pas ou alors c'est que votre First 1 ne sert à rien

    il signale toujours la même erreur.
    escartefigue , pareil le même message.
    [MODE ]
    Comme bien sûr vous nous avez fourni la structure des tables, il nous est forcément très facile de comprendre
    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

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Surtout pas ou alors c'est que votre First 1 ne sert à rien
    voila le test avec flamrobin
    Nom : Sans titre1.png
Affichages : 342
Taille : 47,3 Ko

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je vous ai demandé la structure des tables pour pouvoir faire un test, pas une image écran de flamerobin !
    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

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    voila la structure des tables
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    CREATE TABLE ACH
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      FAC Varchar(30) NOT NULL,
      ORD Integer NOT NULL,
      ANA Varchar(20) CHARACTER SET ISO8859_1,
      MAT Varchar(20) CHARACTER SET ISO8859_1,
      PRO Varchar(20) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      QTE Numeric(14,5),
      MHT Numeric(14,2),
      COI Integer,
      PER Integer,
      DAP Date,
      CHA Varchar(255) CHARACTER SET ISO8859_1,
      IMA Varchar(35) CHARACTER SET ISO8859_1,
      MON Numeric(14,2),
      OBS Varchar(255) CHARACTER SET ISO8859_1,
      PUA Numeric(14,5),
      COIR Integer,
      DESF Varchar(200) CHARACTER SET ISO8859_1,
      MTB Numeric(14,5),
      TAU Numeric(14,2),
      TVA Numeric(14,5),
      TRE Numeric(14,2),
      REM Numeric(14,5),
      UTI Varchar(50),
      COID Integer,
      COIF Integer,
      PUDEV Numeric(14,6),
      TAUXC Numeric(14,6),
      FRATRANS Numeric(14,6),
      FRADOU Numeric(14,6),
      FRAMAN Numeric(14,6),
      FRAAUT Numeric(14,6),
      DEVISE Varchar(15),
      FRATRANSP Numeric(14,6),
      PRIMARY KEY (CAS,DAT,FAC,ORD)
    );
     
    CREATE TABLE RED
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      ORD Integer NOT NULL,
      CLT Varchar(10) CHARACTER SET ISO8859_1,
      FOU Varchar(10) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      REC Numeric(14,2),
      DEP Numeric(14,2),
      SOL Numeric(14,2),
      PRIMARY KEY (CAS,DAT,ORD)
    );
    cependant je pense pas que l'erreur signalé a une relation avec la structure de la base de données

  12. #12
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    je ne pense pas que l'erreur signalée a une relation avec la structure de la base de données
    Ce n'est pas pour contrôler la structure mais pour pouvoir faire des tests que je vous ai demandé la structure d'ailleurs j'ai l'impression qu'il en manque je compte 5 tables dans les requêtes

    ACH, VEN, PAF, VEN et RED et vous ne fournissez que ACH et RED
    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

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    désolé, voila le reste
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    CREATE TABLE PAF
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      ANA Varchar(20) NOT NULL,
      FAC Varchar(20) NOT NULL,
      ORD Integer NOT NULL,
      DEP Numeric(14,2),
      MON Numeric(14,2),
      VER Numeric(14,2),
      RES Numeric(14,2),
      DES Varchar(255) CHARACTER SET ISO8859_1,
      MOP Varchar(30) CHARACTER SET ISO8859_1,
      DAC Date,
      MTB Numeric(14,2),
      TVA Numeric(14,5),
      REM Numeric(14,5),
      TIM Numeric(14,5),
      PRIMARY KEY (CAS,DAT,ANA,FAC,ORD)
    );
    CREATE TABLE PAC
    (
      CAS Integer NOT NULL,
      DAT Date NOT NULL,
      ANA Varchar(20) NOT NULL,
      FAC Varchar(20) NOT NULL,
      ORD Integer NOT NULL,
      DEP Numeric(14,2),
      MON Numeric(14,2),
      VER Numeric(14,2),
      RES Numeric(14,2),
      DES Varchar(255) CHARACTER SET ISO8859_1,
      MOP Varchar(30) CHARACTER SET ISO8859_1,
      DAC Date,
      MTB Numeric(14,2),
      TVA Numeric(14,5),
      REM Numeric(14,5),
      TIM Numeric(14,5),
      BEN Numeric(14,2),
      PRIMARY KEY (CAS,DAT,ANA,FAC,ORD)
    );

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Et il manque encore la table VEN, franchement il faut y mettre du vôtre !
    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

  15. #15
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 131
    Points : 38 549
    Points
    38 549
    Billets dans le blog
    9
    Par défaut
    Belle abnégation Sergio et même pas un vote pour encourager cette bonne volonté, c'est décourageant parfois cette ingratitude

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Mille désolé , voila la table ven
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    CREATE TABLE VEN
    (
      DAT Date NOT NULL,
      BON Varchar(20) CHARACTER SET ISO8859_1 NOT NULL,
      ORD Integer NOT NULL,
      ANA Varchar(20) CHARACTER SET ISO8859_1,
      PRO Varchar(20) CHARACTER SET ISO8859_1,
      DES Varchar(255) CHARACTER SET ISO8859_1,
      QTE Numeric(14,5),
      PUV Numeric(18,6),
      MHT Numeric(14,2),
      COI Smallint,
      CDR Numeric(14,5),
      BEN Numeric(14,2),
      FAC Varchar(20) CHARACTER SET ISO8859_1,
      HEU Timestamp,
      DEN Numeric(14,5),
      OBS Varchar(255) CHARACTER SET ISO8859_1,
      UME Varchar(30),
      ED1 Numeric(14,4),
      ED2 Numeric(14,4),
      ED3 Numeric(14,4),
      QTP Numeric(14,5),
      PUA Numeric(14,5),
      QTD Numeric(14,5),
      QTR Numeric(14,5),
      DAP Date,
      COIR Integer,
      DESCL Varchar(200) CHARACTER SET ISO8859_1,
      CHA Varchar(30),
      IMA Varchar(15),
      MTB Numeric(14,5),
      TAU Numeric(14,2),
      TVA Numeric(14,5),
      TRE Numeric(14,2),
      REM Numeric(14,5),
      UTI Varchar(50),
      COID Integer,
      COIF Integer,
      MHTR Numeric(18,6),
      CLTLIV Char(1),
      CPUV Char(1),
      PRIMARY KEY (DAT,BON,ORD)
    );
    Et je vous doit une explication sur A première vu, c'est plus simple de mettremais cette base de données contient des valeurs nulles c'est pour ça que j'ai fait et j'aurais même pu faire comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    )and((VER<>0)and(VER is not null)
    mais enfin c'est pas ça le problème.

  17. #17
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    Et je vous doit une explication sur A première vue, c'est plus simple de mettremais cette base de données contient des valeurs nulles c'est pour ça que j'ai fait et j'aurais même pu faire comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    )and((VER<>0)and(VER is not null)
    mais enfin c'est pas ça le problème.
    Et bien sûr COALESCE ne vous a pas effleuré l'esprit ?

    finalement ce SQL
    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
     
    INSERT INTO RED(cas,dat,clt,fou,dep,rec,des) 
    with 
    ac as (SELECT ANA,MAX(DESF) desf FROM ACH GROUP BY ANA), 
    ve as (SELECT ANA,MAX(DESCL) descl FROM VEN GROUP BY ANA),
    c as (select 2 as cas,p.DAT,null as clt,p.ANA as fou,null as rec,p.VER as dep,ac.desf des 
           from PAF p 
           LEFT JOIN ac on ac.ANA=p.Ana 
           where p.ANA<>'00000' and p.MOP='ESPECE' and COALESCE(p.VER,0)<>0
    union all 
           select 2 as cas,v.DAT,v.ANA as clt,null as fou,NULL ,null as dep,ve.descl des
           from PAC v 
           left join ve on v.ANA=ve.ANA 
           where v.ANA<>'00000' and v.MOP='ESPECE' and COALESCE(v.VER,0)<>0 
    ) SELECT * FROM C
    Fonctionne, du moins la syntaxe en est acceptée, je suis toutefois étonné d'avoir été obligé de mettre la CTE après le insert cela écrit ce test a été effectué avec FB3.
    A ce propos, comme d'babitude, vous n'avez pas fourni l'information de version Firebird !
    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

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    je suis sur FB 2.5, pour votre code il signale pas d'erreur, mais il se plante, ça fait 2 MINUTE QUE J'ATTEND.
    Nom : Sans titre.png
Affichages : 312
Taille : 56,4 Ko

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    En voilà assez du moins pour moi si
    pour votre code il signale pas d'erreur,
    alors mon objectif est atteint, comme il a fallu pour obtenir de quoi vérifier pas moins de 3 messages ma coupe est pleine.

    Pour ce qui est du temps d'exécution :

    1 - Je n'ai pas vos données
    2 - S'il n'y a aucun index autres que la clé primaire cela ne doit pas vraiment aider
    3 - Rien n'indique "qu'il se plante" et si vous attendez depuis 2 minutes c'est peut-être aussi à cause de votre structure de base de données où, à tout le moins du traitement que vous voulez faire, à moins, bien sûr qu'il n'y ait des tuples, ce qui ne m'étonnerait pas, au niveau des tables

    récupérer une désignation de cette manière (select first 1 descl from ven v where (v.ANA=p.ANA)) as des from PAC P where (ANA<>'00000')and(MOP='ESPECE')and((VER>0)or(VER<0)) est pour moi une absurdité surtout sans clause ORDER BY ou alors c'est qu'il y a de fortes redondances dans vos tables,
    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

  20. #20
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Ah bon, quelque chose ma échappée.

    MA QUESTION PREMIERE ETE
    j'ai voulu améliorer pour réduire la durée d'exécution qui est à peu prés dans les 30 secondes. Alors j'ai modifié le code comme ceci
    C'est vrai que vous m'avez donné un code correcte mais il règle pas mon problème.

Discussions similaires

  1. [XL-2010] Erreur Objet non valide sur requete SQL
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/11/2016, 09h32
  2. Aide sur commande SQL
    Par cdsoft dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/12/2015, 17h33
  3. erreur 3134 sur instruction SQL insert into
    Par tiff13 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/02/2010, 11h28
  4. [AC-2007] Erreur 3134 sur commande SQL
    Par Cagou-77 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/01/2010, 22h25
  5. erreur Token Unknown
    Par bassim dans le forum SQL
    Réponses: 5
    Dernier message: 16/11/2006, 20h03

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