Jak napisać zapytanie które zwróci mi wynik w postaci np 10 najlepszych z kolumny np ilość?
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.
oracle
Czy ktoś potrafi napisać takiego selecta?
Oracle:
SELECT * FROM tabelka WHERE ROWNUM <= 10;
MS SQL, Sybase ASA:
SELECT TOP 10 * FROM tabelka;
PostgreSQL, MySQL:
SELECT * FROM tabelka LIMIT 10;
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