Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 25/04/2011, 17h01   #1
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 105
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2005
Messages : 105
Points : 36
Points : 36
Envoyer un message via MSN à cels
Par défaut Distinct in a view on a view

Bonjour,

je bosse sur SQL SERVER 2008. Il m'arrive un truc auquel je ne m'attendais pas. Je me suis bien cassé la tête à créer une vue (plusieurs successives pour être précis) au dessus de ma table product afin de rajouter des dummy products dont j'aurais besoin dans Essbase.

Donc j'ai finalement réussi à créer ma vue PRODUCT_WITH_DOUBLONS, mais j'ai des doublons. Donc j'ai commencé par juste créer cette dernière vue:

Code :
1
2
3
CREATE VIEW PRODUCT_CLEAN AS(
SELECT DISTINCT *
FROM PRODUCT_WITH_DOUBLONS
Ça ne marche pas, donc j'ai remplacé * par tous mes champs:

Code :
1
2
3
CREATE VIEW PRODUCT_CLEAN AS(
SELECT DISTINCT <tous mes champs>
FROM PRODUCT_WITH_DOUBLONS
Ça ne marche pas non plus, donc j'ai tente avec un group by, ça semblait avoir du sens sur le coup:

Code :
1
2
3
4
CREATE VIEW PRODUCT_CLEAN AS(
SELECT DISTINCT <tous mes champs>
FROM PRODUCT_WITH_DOUBLONS 
GROUP BY <tous mes champs>
Ça ne marche pas non plus, j'ai toujours mes doublons.

Je ne comprends pas, pour moi une vue génère un resultset, si une autre vue utilise ce resultset, elle devrait le voir comme une table, non ? Bref c'est moche j'étais à rien de finir, et suis coincé sur un pauvre DISTINCT.

Merci pour votre aide,

Cyril
cels est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2011, 21h04   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
bonjour,

je ne connais pas les spécificité de sql server mais quand vous faites cette requête sans passer par une vue ça marche ..?

J'aurai plus tendance à penser que dans votre table vous avez une valeur de colonne qui diffère d'une ligne à une autre (typiquement un timestamp)
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 09h24   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Sans la description sous forme DDL des tables sous-jacente (CREATE TABLE ...) impossible de vous répondre.
De plus vous n'avez pas indiqué le texte message d'erreur.
Commencez par respecter la charte de postage.

En principe il n'y a pas de différence entre la requête ad hoc et la vue.

Je soupçonne que vous vouliez faire un DISTINCT sur des données non relationnelles.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro 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 06h52.


 
 
 
 
Partenaires

Hébergement Web