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

Langage SQL Discussion :

[SQL] Colonne unique


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [SQL] Colonne unique
    Bonjour a tous,

    J'ai un soucis concernant une requête SQL sous SQL Server.

    J'ai une requête me retournant un resultat qui ressemble a ceci


    1 | X1 | X | X .....
    2 | X2 | X | X .....
    1 | X | X | X .....
    2 | X | X | X .....
    3 | X3 | X | X .....
    2 | X | X | X .....
    1 | X | X | X .....
    2 | X | X | X .....

    et je voudrais obtenir ceci :

    1 | X1 | X | X .....
    2 | X2 | X | X .....
    3 | X3 | X | X .....

    J'avoue que je bloque totalement, j'ai essaye avec DISTINCT le problème est que ça prend toutes les colonne et pas seulement la première. Group by sans succès...

    Si vous avez une idée, n’hésitez pas !

    Merci d'avance.

    NeoKript

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Quelle est la règle de sélection ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    La requête que j'utilise actuellement, ressemble a cela : (j'ai renomme les champs et tables) :

    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
    SELECT
    		[X].[A],
    		[X].[Id],
    		[Z].[Name],
    		[Y].[B],
    		[Y].[ModificationDatetime],
    		[X].[C]
    	FROM
    		[dbo].[X],
    		[dbo].[Z],
    		[dbo].[Y]
    	WHERE
    			[X].[A] = @Id
    		AND 
    			[Y].[ProdId] = [X].[Id]
    		AND
    			[X].[ParentId] = null
    		AND 
    			[Z].[Id] IN 
    			(
    				SELECT 
    					[U].[ProcId]
    				FROM
    					[dbo].[U]
    				WHERE
    					[U].[Id] = [X].[ProdId]
    			)
    	ORDER BY [Y].[Datetime] DESC

    En gros, c'est un join entre 3 table et j'aimerai que la colonne [X].[Id] soit unique.

    Merci encore

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Pour commencer, selon la norme SQL et depuis 1992, les jointures s'écrivent avec JOIN. Près de 20 ans plus tard, il serait temps de s'y mettre !

    Par définition, ID est unique dans la table X1 non ?
    C'est la jointure avec les autres tables qui produit potentiellement plusieurs lignes pour chaque valeur de X1.ID ?

    Je pose alors la même question que Waldar : Comment choisir parmi ces multiples lignes pour une valeur de X1.ID quelle ligne doit être conservée ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Pour commencer, selon la norme SQL et depuis 1992, les jointures s'écrivent avec JOIN. Près de 20 ans plus tard, il serait temps de s'y mettre !
    Ce n'est pas moi qui vais dire le contraire mais la ou je fais mon stage, il n'aime pas les JOIN

    Citation Envoyé par CinePhil Voir le message
    Par définition, ID est unique dans la table X1 non ?
    Id est bien unique (Cle primaire auto incrémente)

    Citation Envoyé par CinePhil Voir le message
    C'est la jointure avec les autres tables qui produit potentiellement plusieurs lignes pour chaque valeur de X1.ID ?
    Exact !

    Citation Envoyé par CinePhil Voir le message
    Je pose alors la même question que Waldar : Comment choisir parmi ces multiples lignes pour une valeur de X1.ID quelle ligne doit être conservée ?
    Je ne comprend pas trop la question.

    Id | C2 | C3 | C4..... (C2 = Colonne 2... X = Valeur sans importance)
    ---------------------
    1 | X1 | X | X .....
    2 | X2 | X | X .....
    1 | X | X | X .....
    2 | X | X | X .....
    3 | X3 | X | X .....
    2 | X | X | X .....
    1 | X | X | X .....
    2 | X | X | X .....

    Je voudrait que le résultat précédent devienne
    Id | C2 | C3 | C4.....
    ---------------------
    1 | X1 | X | X .....
    2 | X2 | X | X .....
    3 | X3 | X | X .....

    Les lignes du premier tableau sont trier par Date (Voir ORDER BY de la requête) et j'aimerai prendre toutes les premières valeurs afin de ne pas avoir de Id duplique..

    Si ce n'est pas claire dite moi, j’essaierai de mieux expliquer.

    Merci encore.

    NeoKript

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Voilà ce que c'est de vouloir faire des abstractions trop fortes par rapport aux données réelles !

    Dans ta requête, tu manipules les colonnes X.A, X.ID, Z.Name, Y.B, Y.ModificationDateTime, et X.C et dans ton dernier exemple de données tu présentes Id, C2, C3, C4. Comment veux-tu qu'on s'y retrouve ?

    Alors lis les règles du forum et applique-les, si besoin en changeant les noms et autres informations confidentielles mais avec un jeu de données qui ressemble au réel et un résultat attendu correspondant au jeu de données fourni !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [T-SQL] Colonnes d'une table appelées avec une variable
    Par Deedoo2000 dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 25/09/2006, 15h18
  2. [Sql] colonnes d'une table
    Par atanabe dans le forum Oracle
    Réponses: 3
    Dernier message: 03/08/2006, 09h08
  3. importer des fichiers mp3 avec sql server uniquement
    Par cool dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/04/2006, 13h21
  4. [SQL]Retour d'une colonne unique
    Par Le nain Attila dans le forum Oracle
    Réponses: 4
    Dernier message: 31/03/2006, 16h26
  5. Distinct sur colonne unique
    Par Dnx dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/11/2005, 10h10

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