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 23/05/2007, 10h03   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 109
Points : 11
Points : 11
Par défaut [SQL] problème avec une requête

bonjour,
je seche sur une requette:
Code :
1
2
3
4
5
6
7
8
9
 
SELECT * FROM "ARTICLE","HOTEL","PRIX","REGION","FOURNISSEUR" 
		   WHERE 'ARTICLE.id_hotel'='HOTEL.id_hotel' 
			AND 'PRIX.REFERENCE'='ARTICLE.REFERENCE'
		        AND 'HOTEL.id_region'='REGION.id_region'
			AND 'ARTICLE.id_fournisseur'='FOURNISSEUR.id_fournisseur'  
				       GROUP BY ARTICLE.REFERENCE 
                                        ORDER BY ARTICLE.REFERENCE 
                                         LIMIT 1 offset 10;
et voici le msg d'erreur:
Code :
1
2
 
ERROR: missing FROM-clause entry FOR TABLE "article"
qu'est ce que cela veut dire?
ANISSS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 11h34   #2
Membre actif
 
Avatar de budtucker
 
Développeur multimédia
Inscription : avril 2007
Messages : 175
Détails du profil
Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : avril 2007
Messages : 175
Points : 174
Points : 174
Je pense : Les simples côte dans ton where doivent être des doubles :

Code :
1
2
3
4
5
6
7
8
SELECT * FROM "ARTICLE","HOTEL","PRIX","REGION","FOURNISSEUR" 
           WHERE "ARTICLE".id_hotel="HOTEL".id_hotel 
            AND "PRIX"."REFERENCE"="ARTICLE"."REFERENCE"
                AND "HOTEL".id_region="REGION".id_region
            AND "ARTICLE".id_fournisseur="FOURNISSEUR".id_fournisseur  
                       GROUP BY "ARTICLE"."REFERENCE"
                                        ORDER BY "ARTICLE"."REFERENCE" 
                                         LIMIT 1 offset 10;
budtucker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 11h40   #3
Membre régulier
 
Inscription : avril 2007
Messages : 81
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 81
Points : 91
Points : 91
Envoyer un message via MSN à sefaxe82
je pense qu'il y a une ambiguité aux niveau des colonnes communes. il ne sé par exemple dequelle table, ARTICLE ou FOURNISSEUR, prendre la colonne "id_fournisseur".

donc ne mets pas * au niveau du select, mets plutot toutes le colonnes dont ta besoin préfexées par le nom de la table. exemple :
Code :
SELECT "ARTICLE".id_fournisseur, "ARTICLE"."REFERENCE"...
j'espère que ça répond à ton pbm.
sefaxe82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 11h42   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 109
Points : 11
Points : 11
en changeant les simples quotes par les doubles, le msg d'erreur a changé :

Code :
1
2
 
ERROR: COLUMN "ARTICLE.id_xml" must appear IN the GROUP BY clause OR be used IN an aggregate FUNCTION
ANISSS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 15h15   #5
Membre régulier
 
Inscription : avril 2007
Messages : 81
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 81
Points : 91
Points : 91
Envoyer un message via MSN à sefaxe82
maintenant c un pborblème de groupement.
rajoute la colonne "ARTICLE.id_xml" dans la clause groupe by.
Code :
GROUP BY "ARTICLE"."REFERENCE","ARTICLE.id_xml"
sefaxe82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 15h29   #6
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 109
Points : 11
Points : 11
pourkoi doit je ajouter la colonne "ARTICLE.id_xml", puisque je veut faire le group by selon "REFERENCE" sitot
ANISSS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 17h56   #7
Membre régulier
 
Inscription : avril 2007
Messages : 81
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 81
Points : 91
Points : 91
Envoyer un message via MSN à sefaxe82
pare ce que c la règle du regroupement.
en effet, si tu veux grouper sur "ARTICLE"."REFERENCE" tu dois avoir pour une valeur donnée de "ARTICLE"."REFERENCE" les même valeurs pour toutes les lignes !
or le message d'erreur
Code :
ERROR: COLUMN "ARTICLE.id_xml" must appear IN the GROUP BY clause OR be used IN an aggregate FUNCTION
veut dire qu'il y a des valeurs différentes de "ARTICLE.id_xml" pour une même valeur de "ARTICLE"."REFERENCE"

du coup, tu ne peux pas faire un groupement uniquement sur "ARTICLE"."REFERENCE". donc la solution : soit tu rajoutes la colonne "ARTICLE.id_xml" dans la clause groupe by, ou soit tu utilises les fonctions d'agrégat tel que (sum, avg,...) sur la mm colonne "ARTICLE.id_xml".

A+
sefaxe82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h52.


 
 
 
 
Partenaires

Hébergement Web