Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/10/2011, 13h22   #1
Nouveau Membre du Club
 
Inscription : février 2006
Messages : 107
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 107
Points : 39
Points : 39
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 :
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 :
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
n.roussaly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 13h34   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
space, et si tu fais ceci, ça donne quoi ?

Code :
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
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 13h39   #3
Nouveau Membre du Club
 
Inscription : février 2006
Messages : 107
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 107
Points : 39
Points : 39
Ca fonctionne...
Encore mieux si je fais :
Code :
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
n.roussaly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 13h47   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
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
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h01   #5
Nouveau Membre du Club
 
Inscription : février 2006
Messages : 107
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 107
Points : 39
Points : 39
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
n.roussaly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h08   #6
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
Je penses que c'est un problème de version, car sur la 9.X la 1ere requete ne passera pas.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h22   #7
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
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 :
SET add_missing_from = off;
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 14h36   #8
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
il ne semble plus existé dans les versions recente.

du moins en v9.1 c'est le cas.

http://archives.postgresql.org/pgsql...0/msg00093.php
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 15h00   #9
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Citation:
Envoyé par punkoff Voir le message
il ne semble plus existé dans les versions recente.

du moins en v9.1 c'est le cas.
Effectivement et je m'aperçois que déjà en 9.0 le paramètre n'existe plus.
Moralité pour Nicolas: ne débute pas sur PG avec une version obsolète!
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h10.


 
 
 
 
Partenaires

Hébergement Web