Discussion:
Result auf 3 Einträge begrenzen
(zu alt für eine Antwort)
Martin Neumeister
2005-05-24 13:05:05 UTC
Permalink
Moin,

ich habe ein Oracle SQL-Query welches eine Resultmenge von ca 86000 Zeilen liefert.

Nun will ich jedoch nicht alle 86000 Results, sondern einfach nur das man mir die ersten 3 Treffer ausgibt.

Wie kann ich das Query erweitern das mir nur die ersten 3 Treffer ausgegeben werden?

Danke und Gruß,
Martin
Alex Schlecht
2005-05-24 13:14:28 UTC
Permalink
Zumindest mit dem MS-SQL-Server geht es so:

select top 3 * from tabelle

Ciao,

Alex
Joachim Pense
2005-05-24 18:37:59 UTC
Permalink
Post by Alex Schlecht
select top 3 * from tabelle
Fein. Und in DB2 geht es mit fetch first n rows only. War aber leider nicht
die Frage.

Joachim
Alex Schlecht
2005-05-24 19:28:44 UTC
Permalink
Post by Joachim Pense
Fein. Und in DB2 geht es mit fetch first n rows only. War aber leider nicht
die Frage.
Auch schoen!

Doch mit dem Hinweis auf "select Top" hätte man Google befragen
können. Mit den Suchworten "oracle sql top" wäre man dann ganz schnell
auf folgender Seite gelandet:

http://www.orafaq.com/faqsql.htm#TOP

und hier steht die Loesung auf die Frage. Ein bissl was muss man halt
manchmal auch selber machen...
Uwe Weber
2005-05-24 20:40:17 UTC
Permalink
Post by Alex Schlecht
Doch mit dem Hinweis auf "select Top" hätte man Google befragen
können. Mit den Suchworten "oracle sql top" wäre man dann ganz schnell
http://www.orafaq.com/faqsql.htm#TOP
und hier steht die Loesung auf die Frage. Ein bissl was muss man halt
manchmal auch selber machen...
Damit bekommt man die höchsten Werte, nicht die ersten.

Limit kann man auch verwenden, aber nur mit bulk collects
in pl/sql.

Gruß,
uwe
Andreas Mosmann
2005-05-24 13:16:18 UTC
Permalink
Martin Neumeister schrieb am 24.05.2005 in
Post by Martin Neumeister
Moin,
ich habe ein Oracle SQL-Query welches eine Resultmenge von ca 86000 Zeilen liefert.
Nun will ich jedoch nicht alle 86000 Results, sondern einfach nur das man mir
die ersten 3 Treffer ausgibt.
Wie kann ich das Query erweitern das mir nur die ersten 3 Treffer ausgegeben werden?
Danke und Gruß,
Martin
nicht hübsch, aber hast Du schon mal RowNum probiert? Nicht schick, aber
in Oracle klappt es.

select
name
from
tbundestagsabgeordnete
where
rownum<4

Achtung allerdings: er wählt erst aus und sortiert dann, d.h., wenn Du
die alphabetisch ersten brauchst, dann

select
*
from
(
select
name
from
tbundestagsabgeordnete
order by
1
)
where
rownum<4

hth

Andreas
--
wenn email, dann AndreasMosmann <bei> web <punkt> de
Joachim Pense
2005-05-24 18:40:28 UTC
Permalink
Post by Andreas Mosmann
Martin Neumeister schrieb am 24.05.2005 in
Post by Martin Neumeister
Moin,
ich habe ein Oracle SQL-Query welches eine Resultmenge von ca 86000 Zeilen liefert.
Nun will ich jedoch nicht alle 86000 Results, sondern einfach nur das man
mir die ersten 3 Treffer ausgibt.
Wie kann ich das Query erweitern das mir nur die ersten 3 Treffer ausgegeben werden?
Danke und Gruß,
Martin
nicht hübsch, aber hast Du schon mal RowNum probiert? Nicht schick, aber
in Oracle klappt es.
select
name
from
tbundestagsabgeordnete
where
rownum<4
Achtung allerdings: er wählt erst aus und sortiert dann, d.h., wenn Du
die alphabetisch ersten brauchst, dann
select
*
from
(
select
name
from
tbundestagsabgeordnete
order by
1
)
where
rownum<4
Wobei man vielleicht dazusagen sollte, warum das Subselect nötig ist: Wenn
ich "select name from tbu where rownum < 4" schreibe, krieg ich die ersten
3, aber unsortiert. Wenn ich "select name from tbu where rownum < 4 order
by 1" schreibe, sortiert er mir die drei, die er gefunden hat. Daher muss
es so sein, wie Andreas geschrieben hat.

Joachim
Andreas Mosmann
2005-05-25 06:55:06 UTC
Permalink
Joachim Pense schrieb am 24.05.2005 in
Post by Joachim Pense
Post by Alex Schlecht
select
*
from
(
select
name
from
tbundestagsabgeordnete
order by
1
)
where
rownum<4
Wobei man vielleicht dazusagen sollte, warum das Subselect nötig ist: Wenn
ich "select name from tbu where rownum < 4" schreibe, krieg ich die ersten
3, aber unsortiert. Wenn ich "select name from tbu where rownum < 4 order
by 1" schreibe, sortiert er mir die drei, die er gefunden hat. Daher muss
es so sein, wie Andreas geschrieben hat.
Stimmt, hätte ich schreiben sollen, danke
Post by Joachim Pense
Joachim
Andreas
--
wenn email, dann AndreasMosmann <bei> web <punkt> de
Andreas Kretschmer
2005-05-24 13:23:34 UTC
Permalink
Post by Martin Neumeister
Wie kann ich das Query erweitern das mir nur die ersten 3 Treffer ausgegeben werden?
LIMIT 3


end
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Andreas Kretschmer
2005-05-24 13:31:56 UTC
Permalink
Post by Andreas Kretschmer
Post by Martin Neumeister
Wie kann ich das Query erweitern das mir nur die ersten 3 Treffer ausgegeben werden?
LIMIT 3
Sorry, Oracle kennt das wohl nicht.
http://www.php-faq.de/q/q-oracle-limit.html


end
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Loading...