OVH Cloud OVH Cloud

un peu de mal avec un group by

2 réponses
Avatar
olivier HARO
Bonjour,


je suis en train de faire une requete sur l'analyseur de requeête.

Elle me retourne un resultat du type :



COLONNE 1 COLONNE 2

val1.1 val2.1
val2.2
val2.2

val1.2 val2.1
val2.2



J'ai donc un resultat avec group by, mais je voudrais que SQLSERVER ne me
retourne qu'une seule valeur de COLONNE2 par groupe, cad

COLONNE 1 COLONNE2
val1.1 val2.1
val1.2 val2.2



voila la requete en question :


select s2.siret, c.record_id from sirets2 s2 left outer join sirets s on
(s2.siret=s.siret) inner join societes stes on (s2.siret=stes.siret) left
outer join abandons a on (stes.record_id=a.societes_id) inner join contacts
c on (stes.record_id=c.societes_id)
where s.siret is null
and a.societes_id is null
group by s2.siret, c.record_id




Merci d'éclairer ma lanterne ;)


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.742 / Virus Database: 495 - Release Date: 19/08/2004

2 réponses

Avatar
Fred BROUARD
bonjour,

ta requête comporte des bizzareries qui confinent à l'erreur pour ne pas en dire
plus et être méchant...
En effet la jointure :
sirets2 s2 => sirets s => societes stes
est tantôt en OUTER tantôt en INNER !

une solution est (jointures rectifiées)

select s2.siret, min(c.record_id)

from sirets2 s2
left outer join sirets s
on (s2.siret=s.siret)
left outer join societes stes
on (s2.siret=stes.siret)
left outer join abandons a
on (stes.record_id=a.societes_id)
left outer join contacts c
on (stes.record_id=c.societes_id)

where s.siret is null
and a.societes_id is null

group by s2.siret


A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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
************************ www.datasapiens.com *************************



olivier HARO a écrit:
Bonjour,


je suis en train de faire une requete sur l'analyseur de requeête.

Elle me retourne un resultat du type :



COLONNE 1 COLONNE 2

val1.1 val2.1
val2.2
val2.2

val1.2 val2.1
val2.2



J'ai donc un resultat avec group by, mais je voudrais que SQLSERVER ne me
retourne qu'une seule valeur de COLONNE2 par groupe, cad

COLONNE 1 COLONNE2
val1.1 val2.1
val1.2 val2.2



voila la requete en question :


select s2.siret, c.record_id from sirets2 s2 left outer join sirets s on
(s2.siret=s.siret) inner join societes stes on (s2.siret=stes.siret) left
outer join abandons a on (stes.record_id=a.societes_id) inner join contacts
c on (stes.record_id=c.societes_id)
where s.siret is null
and a.societes_id is null
group by s2.siret, c.record_id




Merci d'éclairer ma lanterne ;)


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.742 / Virus Database: 495 - Release Date: 19/08/2004





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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
************************ www.datasapiens.com *************************
Avatar
Synopsis
Afin de levé l'ambiguité tu dois nous donner le critère
qui permet de déterminer la bonne valeur de colonne2

le max(colonne2) ?
, le min(colonne2)
, colonne2 IN...

Dans le cas colonne1 = val1.1
est la valeur de colonne2 attendue ?

"olivier HARO" a écrit dans le message de
news:412b1b06$0$34433$
Bonjour,


je suis en train de faire une requete sur l'analyseur de requeête.

Elle me retourne un resultat du type :



COLONNE 1 COLONNE 2

val1.1 val2.1
val2.2
val2.2

val1.2 val2.1
val2.2



J'ai donc un resultat avec group by, mais je voudrais que SQLSERVER ne me
retourne qu'une seule valeur de COLONNE2 par groupe, cad

COLONNE 1 COLONNE2
val1.1 val2.1
val1.2 val2.2



voila la requete en question :


select s2.siret, c.record_id from sirets2 s2 left outer join sirets s on
(s2.siret=s.siret) inner join societes stes on (s2.siret=stes.siret) left
outer join abandons a on (stes.record_id=a.societes_id) inner join


contacts
c on (stes.record_id=c.societes_id)
where s.siret is null
and a.societes_id is null
group by s2.siret, c.record_id




Merci d'éclairer ma lanterne ;)


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.742 / Virus Database: 495 - Release Date: 19/08/2004