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

PostgreSQL Discussion :

Erreur sur Microsoft Query mais pas sur PostgreSQL : "error column co.no_etude_financeur does not exist"


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 149
    Points : 48
    Points
    48
    Par défaut Erreur sur Microsoft Query mais pas sur PostgreSQL : "error column co.no_etude_financeur does not exist"
    Bonjour,

    J'ai l'erreur suivante sur Microsoft Query alors que sur Postgresql elle passe sans probleme... :

    "error column co.no_etude_financeur does not exist; Error while executing the query "

    Pour information j'essaye depuis Excel avec ODBC de lancer une requête qui me permette de récupérer automatiquement les informations de la base de données.

    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
    ------------------------------- DETAIL DES COMMANDES ---------------------------------------------------------
     
    ----------suivi maj commandes----------------
     
     
     
    --Informations sur les commandes clients
     select 
     gr.nom "Groupe",
     ad.ville_mix "ville",
     upper(c.nom) "Nom", 
     t.opl "N° OPL",
     co.no_etude_financeur "N° etude",
     substring(cast(t.date_emission as character varying (50)),1,10) "Date commande" 
     
    from transaction t
    inner join etablissement e on t.id_distributeur = e.id_etablissement
    inner join adresse ad on e.id_adresse=ad.id_adresse
    inner join entite ent on e.id_entite=ent.id_entite
    inner join groupe gr on gr.id_groupe=ent.id_groupe
    left join utilisateur uti on uti.id_utilisateur=t.vendeur
    LEFT JOIN transaction_ligne TL1 ON TL1.id_transaction=t.id_transaction AND TL1.produit_eligible=FALSE
    inner join client c on c.id_client = t.id_client
    inner join parametre p2 on p2.id_parametre=c.civilite
    inner join parametre para on para.id_parametre=c.profession
    inner join transaction_ligne tl on tl.id_transaction = t.id_transaction and tl.produit_eligible=TRUE
    inner join parametre p1 on p1.id_parametre=t.id_statut_opl
    inner JOIN (select id_transaction, max(no_etude_financeur) "no_etude_financeur" from contrat group by id_transaction) as co ON co.id_transaction=t.id_transaction
    inner JOIN contrat con ON co.id_transaction=con.id_transaction
    inner join cat_evollis_categorie cec on cec.id_evollis_categorie=tl.id_cat_evollis_categorie
    left join evenement ev1 on t.id_transaction=ev1.id_evt and ev1.id_liste_evenement=71 --commandes acceptation de financement et financées
    left join evenement ev5 on t.id_transaction=ev5.id_evt and ev5.id_liste_evenement=82 --commandes financées
    inner join evenement ev2 on t.id_transaction=ev2.id_evt and ev2.id_liste_evenement=66 --avoir la VR
     
    where t.id_statut_opl in (364,365,367,603,354,617,366,356,357)
    and T.test is not TRUE --enlever les tests
    and T.doublon is not TRUE -- enlever les doublons
    and T.id_transaction in (select id_evt from evenement where id_liste_evenement in (66)) --commandes qui ont un scoring
    and T.date_emission > date_trunc('day',current_date-30)
     
     
    group by ent.nom, e.nom, t.date_emission, co.no_etude_financeur, t.opl, t.id_transaction, c.nom, c.prenom, tl.designation_produit_dis, ev1.date_creation,  p1.libelle_court, t.duree, 
     t.montant_total_ttc,  t.montant_pack, (t.montant_pack*(t.duree-1)),  ev2.commentaire, c.email_login ,ev5.date_creation, ad.cp, e.merchant_id,
     cec.libelle,uti.nom, uti.prenom,c.date_naissance, para.libelle_long,c.revenus_mensuels,t.tarif_livraison_ttc,TL1.prix_ttc, tl.cout_garantie, con.no_contrat_financeur,gr.nom, ad.ville_mix, p2.libelle_court
     
    order by t.date_emission;

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez de mettre votre requête dans une vue et de faire un select * sur la vue depuis Excel.
    C'est pas impossible qu'ODBC fasse des interprétations hasardeuses.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 149
    Points : 48
    Points
    48
    Par défaut suite
    Bonjour,
    Merci de me venir en aide.
    Je ne comprends pas ce que vous me demandez de faire concretement.

    merci.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Sur postgreSQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create view <lavue> as select ...
    Sur Excel :

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    En effet, ODBC semble un peu perdu

    essayez de l'aider un peu en modifiant vos alias, la façon de les écrire ou d'y faire référence.

    Par exemple, est-ce que ça fonctionne mieux en mettant vos alias entre guillemets lorsque vous y faites référence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    co."no_etude_financeur" "N° etude"

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 149
    Points : 48
    Points
    48
    Par défaut erreur : column majcommande. groupe does not exist; Error while executing the query
    Bonsoir,

    J'ai fait ce que vous m'avez demandé de faire et j'ai l'erreur suivante, je ne comprends pas pourquoi il parle de colonne... :

    erreur : column majcommande. groupe does not exist; Error while executing the query

    Merci.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Il y a plusieurs horreur dans votre requête.
    1) l'utilisation du nom TRANSACTION pour nommer une table est une stupidité invraisemblable. En effet c'est un mot clef de SQL ! Il faut éviter que vos identifiant SQL soient des mots clef de SQL. Deux solutions :
    a) changer de nom (c'est le mieux)
    b) l'entourer de guillemets
    2) l'utilisation de noms mal formés : "N° OPL", "N° etude"
    3) une clause GROUP BY monstrueuse qui ne sert à rien sauf à plomber les performances, puisqu'il n'y a aucun calcul d'agrégat dans votre requête... ! Que cherchez vous à faire avec ce GROUP BY ?

    Bref, apprenez le SQL. Mon livre, comme mon site web peuvent vous y aider !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 149
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Merci pour ces réponses !
    J'ai modifié ma requête.

    Pour le point 1, j'ai opté pour l'instant pour la solution b)
    Pour le point 2 je ne comprends pas quoi faire.
    Enfin pour le point 3 le groupe by permet de regrouper par OPL parce qu'il peut y avoir des doublons sur les OPL dans l'application !
    (Je rajoute que je n'ai pas crée la base de données, je fais des requêtes dessus seulement et j'apprends le 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
    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
     
    ------------------------------- DETAIL DES COMMANDES ---------------------------------------------------------
     
    ----------suivi maj commandes----------------
     
     
     
    --Informations sur les commandes clients
     select
     gr.nom "Groupe",
     ad.ville_mix "ville",
     upper(c.nom) "Nom",
     t.opl "N° OPL",  
     max(con."no_etude_financeur") "N° etude",
     substring(cast(t.date_emission as character varying (50)),1,10) "Date commande",
     t.montant_total_ttc "Montant cde",
     par.libelle_long "Statut"
     
    from "transaction" t
    inner join etablissement e on t.id_distributeur = e.id_etablissement
    inner join adresse ad on e.id_adresse=ad.id_adresse
    inner join entite ent on e.id_entite=ent.id_entite
    inner join groupe gr on gr.id_groupe=ent.id_groupe
    inner join client c on c.id_client = t.id_client
    inner JOIN (select id_transaction, max("no_etude_financeur") "no_etude_financeur" from contrat group by id_transaction) as co ON co.id_transaction=t.id_transaction
    inner JOIN contrat con ON co.id_transaction=con.id_transaction
    inner join parametre par on par.id_parametre = t.id_statut_opl
     
    where t.id_statut_opl in (364,365,367,603,354,617,366,356,357)
    and T.test is not TRUE --enlever les tests
    and T.doublon is not TRUE -- enlever les doublons
    and T.id_transaction in (select id_evt from evenement where id_liste_evenement in (66)) --commandes qui ont un scoring
    --and T.date_emission > date_trunc('day',current_date-30)
    and T.date_emission > '2015-01-01'
     
    group by t.opl,
    c.nom, t.date_emission, 
    co."no_etude_financeur", gr.nom,  ad.ville_mix, t.montant_total_ttc,par.libelle_long
     
     
    order by t.date_emission;

Discussions similaires

  1. [Débutant] Erreur sur un ordinateur mais pas sur l'autre
    Par noftal dans le forum VB.NET
    Réponses: 4
    Dernier message: 05/12/2013, 17h45
  2. Réponses: 1
    Dernier message: 02/02/2012, 16h15
  3. Réponses: 1
    Dernier message: 01/07/2010, 10h50
  4. Erreur sur un poste mais pas sur un autre
    Par hawk² dans le forum Framework .NET
    Réponses: 10
    Dernier message: 27/08/2007, 09h33
  5. [CSS] border-collapse sur les TR mais pas sur les TD.
    Par hpfx dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 03/04/2005, 16h16

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