|
| 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.
| |
|
|