TOP, Zapytanie

Odpowiedz Nowy wątek
gosc
2006-12-18 17:03
gosc
0

Jak napisać zapytanie które zwróci mi wynik w postaci np 10 najlepszych z kolumny np ilość?

Pozostało 580 znaków

2006-12-18 17:09

Rejestracja: 16 lat temu

Ostatnio: 10 lat temu

0

Zależy na jakiej bazie - niestety nie ma tu zgodności. Niektóre bazy (jak PostgreSQL) oferują słowo kluczowe LIMIT, inne (jak na przykład Oracle) wymagają przeindeksowania wyników i pozostawienia wyników tylko do określonego indeksu.


<font color="red">Konto porzucone</span>

Dzięki wszystkim forumowiczom za lata wspólnych dyskusji; miłej zabawy w programowanie!
Sławomir 'Szczawik' Włodkowski

Pozostało 580 znaków

gosc
2006-12-18 17:15
gosc
0

oracle

Pozostało 580 znaków

gosc
2006-12-22 09:51
gosc
0

Czy ktoś potrafi napisać takiego selecta?

Pozostało 580 znaków

2006-12-22 11:22
Moderator

Rejestracja: 15 lat temu

Ostatnio: 15 godzin temu

0

Oracle:

SELECT * FROM tabelka WHERE ROWNUM <= 10;

MS SQL, Sybase ASA:

SELECT TOP 10 * FROM tabelka;

PostgreSQL, MySQL:

SELECT * FROM tabelka LIMIT 10;

Pozostało 580 znaków

gosc
2006-12-22 11:57
gosc
0
Krolik napisał(a)

Oracle:

SELECT * FROM tabelka WHERE ROWNUM <= 10;

niestety nie jest to takie proste.
mamy np kolumny: ID, Nazwisko, ilosc.
Chcemy top10 z ilosc ktora nie jest ułozona pokolej. Więc rownum pokaże tylko 10 rekordów a nie top 10
przydało by się coś w stylu:

SELECT * FROM tabelka WHERE ROWNUM <= 10 order by ilosc desc;

Ale to też da zły wynik. bo order by będzie dzialać tylko do tych 10 rekordów z rownum


Łatwizna :)
Wystarczy trochę pomysleć.

select from (SELECT FROM tabelka order by ilosc desc) WHERE ROWNUM <= 10

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0