Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 02/09/2011, 15h48   #1
Membre à l'essai
 
Inscription : septembre 2005
Messages : 110
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 110
Points : 22
Points : 22
Par défaut Problème de group by ou distinct

Bonjour,
Je viens vers vous car je ne trouve de solution à mon problème.

J'ai 4 tables avec une dizaine de champs dans chacune.
Je dois faire une requête qui, grâce à des inner join, me permet de remonter tous les champs des 4 tables dans chaque ligne du résultat de la requête.
Jusque là c'est ok.

Maintenant, il se trouve que dans l'un des champs de l'une des tables, il y a une valeurs qui peut se répéter plusieurs fois. Par exemple, la valeur 'R5412', peut sortir plusieurs fois dans les lignes du résultat de ma requête, et dans la colonne 'ModèleRef' (colonne qui se trouve dans l'une des 4 table uniquement).

Le résultat de la requête Sql me sort 7 lignes en tout.
Mais dans toutes les lignes, la colonne 'ModèleRef' ne présente que 2 valeurs différents.
Je voudrais donc remonter que 2 lignes et non 7.


Ex: j'ai ceci :

Table1.val1 | Table1.val2 | Table2.val1 | Table2.val2 | Table3.val1 | Table4.val1
------------------------------------------------------------------------------
12 VAL1 548 989 54545 45562
13 VAL1 435 459 45655 31645
14 VAL2 824 359 34545 64578
15 VAL2 111 457 58741 13542
16 VAL2 986 478 35412 91642
17 VAL2 412 358 02401 34544
18 VAL2 021 320 11257 94647
19 VAL2 741 540 99874 34216


je voudrais ceci :

Table1.val1 | Table1.val2 | Table2.val1 | Table2.val2 | Table3.val1 | Table4.val1
------------------------------------------------------------------------------
13 VAL1 435 459 45655 31645
14 VAL2 824 359 34545 64578


Peut importe le contenu des autres valeurs, il se peut qu'il y ai des valeurs similaires aussi mais c'est sur une seule colonne que je souhaite filtrer le résultat.


Je ne vois pas comment faire cela. Avec Group By, je ne peux pas conserver le contenu des 4 tables dans chaque ligne. Et je dois absolument les avoir pour la suite de mon programme.

Vers quoi dois-je m'orienter afin de pouvoir filtrer le résultat de ma requête ?

Merci par avance pour toute l'aide que vous pourrez m'apporter.

PS, voici ma requête :

Code :
1
2
3
4
5
6
SELECT PX.*, LCLASS1.*, prt.*, sup.* FROM LCLASS1
INNER JOIN PX ON LCLASS1.PartCode = PX.PX_SSALDOC AND LCLASS1.Refnumber = PX.PX_CODE
INNER JOIN prt ON PX.PX_SSDC = prt.partcode
INNER JOIN sup ON PX.PX_MARQUE = sup.supcode
WHERE (Refnumber='27407') AND (sup.Actif = 1)
ORDER BY PX.PX_INTERNETTTC ASC
=> Grâce au Refnumber, j'obtient mes 7 lignes avec un LCLASS1.Code qui se répète et sur lequel je souhaite ne faire remonter qu'une seule ligne par LCLASS1.Code identique.
Stephane_br est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 21h24   #2
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Bonsoir,

Vous ne voulez garder qu'une seule ligne pour chaque ModèleRef et ceci peut importe la valeur des autres colonnes mais sur quel critère choisissez vous la ligne en question ?

Précisez un peu votre contexte

++
mikedavem 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 23h28.


 
 
 
 
Partenaires

Hébergement Web