/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
SQL syntaks
Fra : Aino


Dato : 31-01-02 11:04

Hvad er syntaksen, hvis man ønsker at undersøge de rækker, hvor der er
flere tilfælde, når man grupperer efter et antal kolonner?

Altså:

A B C D E
---------------
1 a n x
1 a n y
1 b n x
1 a m x
1 a m y
2 a n x

Jeg ønsker her at se rækkerne 1,2,4,5 da der her er flere rækker når man
grupperer efter A, B og C.

Select A,B,C,D,E from tabel where count(??? noget med group by A,B,C) >
1 order by A,B,C,D

Jeg bruger TOAD til at undersøge nogle Oracle-databaser.

--
Mvh Aino

 
 
Nis Jorgensen (31-01-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 31-01-02 14:08

On Thu, 31 Jan 2002 11:03:52 +0100, Aino <aij@topsoe.dk> wrote:

>Hvad er syntaksen, hvis man ønsker at undersøge de rækker, hvor der er
>flere tilfælde, når man grupperer efter et antal kolonner?
>
>Altså:
>
> A B C D E
>---------------
> 1 a n x
> 1 a n y
> 1 b n x
> 1 a m x
> 1 a m y
> 2 a n x
>
>Jeg ønsker her at se rækkerne 1,2,4,5 da der her er flere rækker når man
>grupperer efter A, B og C.
>
>Select A,B,C,D,E from tabel where count(??? noget med group by A,B,C) >
>1 order by A,B,C,D
>
>Jeg bruger TOAD til at undersøge nogle Oracle-databaser.

Du kan ikke bruge count direkte i en where-clause ... proev

SELECT a,b,c,d,e FROM tabel AS t1 WHERE
(
   SELECT Count(*)
   FROM tabel AS t2
   WHERE t1.a = t2.a
   AND t1.b = t2.b
   AND t1.c = t2.c
) > 1

Eller alternativt:

SELECT a,b,c,d,e FROM tabel AS t1 INNER JOIN tabel AS t2 ON
   (t1.a = t2.a
   AND t1.b = t2.b
   AND t1.c = t2.c)
GROUP BY a,b,c,d,e
HAVING count(*) > 1

--
Nis Jorgensen
Amsterdam

Join the Patti Beadles Fan Club!
Details to follow.

Kristian Damm Jensen (31-01-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 31-01-02 16:17

Nis Jorgensen wrote:

<snip>

> SELECT a,b,c,d,e FROM tabel AS t1 INNER JOIN tabel AS t2 ON
> (t1.a = t2.a
> AND t1.b = t2.b
> AND t1.c = t2.c)
> GROUP BY a,b,c,d,e
> HAVING count(*) > 1

Nydelig løsning, men...

Nitpick, du er nødt at kvalificere de udvalgte kolonner:

SELECT t1.a, t1.b, t1.c, t1.d, t1.e
FROM tabel AS t1 INNER JOIN tabel AS t2 ON
(t1.a = t2.a
AND t1.b = t2.b
AND t1.c = t2.c)
GROUP BY a,b,c,d,e
HAVING count(*) > 1


--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.dk | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Jan Eliasen (31-01-2002)
Kommentar
Fra : Jan Eliasen


Dato : 31-01-02 17:04



Kristian Damm Jensen (06-02-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 06-02-02 08:40

Jan Eliasen wrote:
>
> On Thu, 31 Jan 2002, Kristian Damm Jensen wrote:
>
> > Nitpick, du er nødt at kvalificere de udvalgte kolonner:
> > SELECT t1.a, t1.b, t1.c, t1.d, t1.e
> > GROUP BY a,b,c,d,e
> Skal man ikke også det i group by cluasen?

Jo.


--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.dk | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste