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 :

Alias pour un résultat différent [V8.?]


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 113
    Par défaut Alias pour un résultat différent [V8.?]
    Bonjour,
    Nouveau sur PG je me trouve face à un cas que je juge bizarre.
    En effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT
      dwhouse.fait_effectif.val,
      to_char(to_date((dwhouse.fait_effectif.date_fait), 'yyyy-mm-dd'), 'yyyy/mm')
    FROM
      "dwhouse"."fait_effectif"  Table__37
    ne me répond pas la meme chose que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT
      dwhouse.fait_effectif.val,
      to_char(to_date((dwhouse.fait_effectif.date_fait), 'yyyy-mm-dd'), 'yyyy/mm')
    FROM
      "dwhouse"."fait_effectif"
    La première requête me retourne plus de lignes que ce qui est contenu dans la table, la seconde correspond à mes attentes.

    A vrai dire ca ne m'arrange pas car la première requête est générée automatiquement.
    Quelqu'un a t il une idée de la raison de ce comportement?
    Merci d'avance.
    Nicolas

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    space, et si tu fais ceci, ça donne quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LECT
      Table__37.val,
      to_char(to_date((Table__37.date_fait), 'yyyy-mm-dd'), 'yyyy/mm')
    FROM
      "dwhouse"."fait_effectif"  Table__37

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 113
    Par défaut
    Ca fonctionne...
    Encore mieux si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT
      val,
      to_char(to_date((date_fait), 'yyyy-mm-dd'), 'yyyy/mm')
    FROM
      "dwhouse"."fait_effectif"  Table__37
    ca fonctionne...
    Donc je me demande si postgresql voyant que les objets du select ne sont pas dans la table va s'amuser a faire un CROSS join entre : Table__37 et la table "dwhouse"."fait_effectif"...
    Bref je comprends pas trop sa réaction

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Quand ca foire tu as des données en double ?

    Sinon pour moi c'est un bug ... upgrade ta version ?

    edit :
    tiens : http://archives.postgresql.org/pgsql...4/msg00087.php

    Sinon avec une version plus récente de de PG tu ne pourras pas faire ce genre de requête.
    En effet tu seras obligé soit d'utiliser l'alias soit rien pour préfixer le nom de test colonnes.

    Ce qui est au final pas si bug que ca en y réfléchissant un peu

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 113
    Par défaut
    Du coup je suis très étonné que Postgres ne me jette pas quand je fais ma toute première requête!
    Merci à tous pour votre aide.
    Nicolas

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Je penses que c'est un problème de version, car sur la 9.X la 1ere requete ne passera pas.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Ce comportement de lever une erreur ou pas dépend d'un paramètre nommé add_missing_from
    Sur des versions récentes il est à off par défaut, sur des versions plus anciennes (8.2 ?) il doit être à on. C'est changeable dans le postgresql.conf ou pour la session en SQL avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET add_missing_from = off;

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

Discussions similaires

  1. [RegEx] preg_replace différent pour chaque résultat capturé
    Par nydaunvan dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2009, 14h04
  2. [ZF 1.8] Résultats différents pour mêmes actions
    Par diagonale dans le forum MVC
    Réponses: 7
    Dernier message: 08/08/2009, 23h12
  3. Réponses: 6
    Dernier message: 24/05/2007, 13h40
  4. gettime 2 résultats différents pour une meme date
    Par krolineeee dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 05/03/2007, 14h36
  5. Réponses: 5
    Dernier message: 04/01/2006, 19h34

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