pb de doublons dans requete

Le
Rickal
Salut,

Petite qestion : Soit une table TT avec deux champs T et P contenant
les tuples suivants:

TT:
T | P
--
t1 | p1
t2 | p21
t2 | p22

Je cherche une req qui me renverrais soit :
t1 | p1
t2 | p21

soit :
t1 | p1
t2 | 'p21, p22'

Donc quelque chose qui s'ecrirait SELECT DISTINCT(T), P FROM TT.
Sauf que ca ca donne pas ce que je cherche, ca supprime pas les
doublons sur T (ce qui est normal au passage) (autre sol : je n'ai pas
trouvé de fonction d'agregat qui fasse la concatenantion de chaines)

Merci

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Rickal
Le #11720411
Rickal a exposé le 22/04/2004 :
Salut,

Petite qestion : Soit une table TT avec deux champs T et P contenant les
tuples suivants:

TT:
T | P
-----------
t1 | p1
t2 | p21
t2 | p22

Je cherche une req qui me renverrais soit :
t1 | p1
t2 | p21

soit :
t1 | p1
t2 | 'p21, p22'

Donc quelque chose qui s'ecrirait SELECT DISTINCT(T), P FROM TT.
Sauf que ca ca donne pas ce que je cherche, ca supprime pas les doublons sur
T (ce qui est normal au passage) (autre sol : je n'ai pas trouvé de fonction
d'agregat qui fasse la concatenantion de chaines)

Merci



J'ai trouvé qqch qui marche meme si c'est pas super efficace :
SELECT T, P
FROM TT tt
WHERE P IN (SELECT MAX (P)
FROM TT tt2
WHERE tt2.T = tt.T)

Si il y a plus simple ou plus rapide je suis preneur.
Merci

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Fred BROUARD
Le #11720371
Salut,

Rickal a écrit:
Salut,

Petite qestion : Soit une table TT avec deux champs T et P contenant les
tuples suivants:

TT:
T | P
-----------
t1 | p1
t2 | p21
t2 | p22

Je cherche une req qui me renverrais soit :
t1 | p1
t2 | p21




SELECT T, MIN(P)
FROM MaTable
GROUP BY T


A +


soit :
t1 | p1
t2 | 'p21, p22'

Donc quelque chose qui s'ecrirait SELECT DISTINCT(T), P FROM TT.
Sauf que ca ca donne pas ce que je cherche, ca supprime pas les doublons
sur T (ce qui est normal au passage) (autre sol : je n'ai pas trouvé de
fonction d'agregat qui fasse la concatenantion de chaines)

Merci




--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Rickal
Le #11720341
aaaouchh c'est dramatique en termes de perfs, quelqu'un a mieux?


Rickal avait énoncé :
Rickal a exposé le 22/04/2004 :
Salut,

Petite qestion : Soit une table TT avec deux champs T et P contenant les
tuples suivants:

TT:
T | P
-----------
t1 | p1
t2 | p21
t2 | p22

Je cherche une req qui me renverrais soit :
t1 | p1
t2 | p21

soit :
t1 | p1
t2 | 'p21, p22'

Donc quelque chose qui s'ecrirait SELECT DISTINCT(T), P FROM TT.
Sauf que ca ca donne pas ce que je cherche, ca supprime pas les doublons
sur T (ce qui est normal au passage) (autre sol : je n'ai pas trouvé de
fonction d'agregat qui fasse la concatenantion de chaines)

Merci



J'ai trouvé qqch qui marche meme si c'est pas super efficace :
SELECT T, P
FROM TT tt
WHERE P IN (SELECT MAX (P)
FROM TT tt2
WHERE tt2.T = tt.T)

Si il y a plus simple ou plus rapide je suis preneur.
Merci



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Rickal
Le #11720151
Fred BROUARD a formulé ce jeudi :
Salut,

Rickal a écrit:
Salut,

Petite qestion : Soit une table TT avec deux champs T et P contenant les
tuples suivants:

TT:
T | P
-----------
t1 | p1
t2 | p21
t2 | p22

Je cherche une req qui me renverrais soit :
t1 | p1
t2 | p21




SELECT T, MIN(P)
FROM MaTable
GROUP BY T


A +



bon sang mais c'est bien sur!!!, merci bcp, je suis vraiment pas dedans
aujourd'hui!!
Dis moi, est-ce qu'il existe une fonction d'agregat qui me permettrait
à la place du MIN de faire une concatenation comme
p21 + '/' + p22 + ... + '/' + p2n
avec p21, p22,..., p2n des varchar?

a+

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Fred BROUARD
Le #11720131
C'est possible, mais complexe en SQL "pur" et unqiuement si le nombre
d'occurence est limité. En plus c'est déconseillé.
A lire :
http://sqlpro.developpez.com/SQL_AZ_E.html#Cosmos

En revanche avec les notions d'analyse multi dimensionelle c'est plus
facile à faire (PIVOT).

A +

Rickal a écrit:
Fred BROUARD a formulé ce jeudi :

Salut,

Rickal a écrit:

Salut,

Petite qestion : Soit une table TT avec deux champs T et P contenant
les tuples suivants:

TT:
T | P
-----------
t1 | p1
t2 | p21
t2 | p22

Je cherche une req qui me renverrais soit :
t1 | p1
t2 | p21





SELECT T, MIN(P)
FROM MaTable
GROUP BY T


A +



bon sang mais c'est bien sur!!!, merci bcp, je suis vraiment pas dedans
aujourd'hui!!
Dis moi, est-ce qu'il existe une fonction d'agregat qui me permettrait à
la place du MIN de faire une concatenation comme
p21 + '/' + p22 + ... + '/' + p2n
avec p21, p22,..., p2n des varchar?

a+




--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Publicité
Poster une réponse
Anonyme