doložka ORDER BY. Třídění SQL – ORDER BY Klauzule SQL Příklad pořadí podle dotazů

💖 Líbí se vám? Sdílejte odkaz se svými přáteli

V budoucnu možná budeme muset náš výběr seřadit – abecedně pro text nebo vzestupně/sestupně pro číselné hodnoty. Pro takové účely v SQL existuje speciální operátor SEŘADIT PODLE .

1. Třídění vybraných dat.

Seřaďme celou naši tabulku podle množství prodeje produktů, konkrétně podle sloupce Množství.

VYBRAT * OD Souhrnný produkt OBJEDNAT PODLE Částky

Vidíme, že dotaz seřadil záznamy v poli vzestupně Množství. Je bezpodmínečně nutné dodržet posloupnost operátorů, tzn. operátor SEŘADIT PODLE by měl být uveden na samém konci žádosti. V opačném případě se zobrazí chybová zpráva.

Také vlastnost operátora SEŘADIT PODLE je, že umí třídit data podle pole, které jsme v dotazu nevybrali, tedy stačí, že v databázi vůbec je.

2. Třídění podle několika polí.

Nyní náš příklad seřaďme dodatečně podle dalšího pole. Ať je to pole Město, která zobrazuje místo prodeje produktů.

VYBRAT * OD Sumproduct OBJEDNAT PODLE Částky, Město

Pořadí řazení bude záviset na pořadí polí v požadavku. To znamená, že v našem případě se nejprve budou data třídit podle sloupců Množství a poté podle Město.

3. Směr řazení.

I když výchozí operátor SEŘADIT PODLE seřadí vzestupně, můžeme také zadat hodnoty řazení sestupně. Za tímto účelem na konec každého pole vložíme operátor DESC (což je zkratka pro slovo KLESAJÍCÍ).

VYBRAT * OD Souhrnný produkt OBJEDNAT PODLE Částky DESC , Město

V tomto příkladu hodnota v poli Množství byly seřazeny v sestupném pořadí a v poli Město- Vzestupně. Operátor DESC platí pouze pro jeden sloupec, takže v případě potřeby musí být zapsán za každým polem, které se účastní řazení.


Další cyklus:

Krok 8: Jednoduché třídění

Pokud se má výsledek vašeho SQL dotazu stát zdrojovým materiálem pro sestavu, pak se otázka třídění dat v ní stává extrémně důležitou, protože pro osobu, která čte sestavu, která není správně seřazena, je velmi obtížné rychle najít informace, kterou potřebují. Pro řazení dat podle sloupců výsledků dotazu (v našem případě podle polí tabulky) používá SQL klíčové slovo ORDER BY. Příklad nejjednoduššího třídění je uveden níže. Základ je převzat z požadavku z kroku 2: „Požadavek s jednoduchým kritériem výběru“. Zaměstnance řadíme podle pole S_NAME (celé jméno).

VYBERTE S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Řazení výsledku SQL dotazu podle jednoho pole.

Krok 9. Komplexní třídění

Často, a dokonce téměř vždy, je nutné řadit data podle více než jednoho sloupce a ne vždy ve vzestupném pořadí. Syntaxe SQL předpokládá, že za klíčovým slovem ORDER BY je uveden seznam sloupců oddělených čárkou a také způsob řazení pro každý sloupec: ve vzestupném pořadí hodnot - ASC nebo v sestupném pořadí - DESC. V níže uvedeném příkladu zobrazujeme záznamy pro všechny zaměstnance v sestupném pořadí podle délky jejich služby. Zaměstnance se stejnou délkou služby řadíme v abecedním pořadí.

SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Třídění výsledku SQL dotazu podle dvou polí.

Poměrně často se u sloupců jako [datum] používá obrácené pořadí řazení. Pokud je v datu uloženo například datum, kdy byla informace zadána, pak se při zpětném řazení ty záznamy, které byly nedávno přidány vzhledem k ostatním, objeví na samém začátku seznamu. Pokud dotaz načte oznámení o novinkách z databáze, obdržíme seznam oznámení seřazených sestupně podle jejich relevance, což může být velmi užitečné, protože oznámení se obvykle čtou shora dolů a na zpravodajských webech se nezobrazují všechna , ale jen několik „nejčerstvějších“.

Při získávání dat může být důležité získat je v určité uspořádané podobě. Řazení lze provádět podle libovolných polí s libovolným datovým typem. Může se jednat o vzestupné nebo sestupné řazení číselných polí. U znakových (textových) polí to lze řadit v abecedním pořadí, i když v podstatě je to také řazeno vzestupně nebo sestupně. Může být také prováděn v libovolném směru - od A do Z a naopak od Z do A.

Podstatou procesu třídění je zredukovat posloupnost na určité pořadí. Více o řazení se dozvíte v článku Algoritmy řazení, například řazení libovolné číselné řady ve vzestupném pořadí:

2, 4, 1, 5, 9

výsledkem by měla být uspořádaná sekvence:

1, 2, 4, 5, 6

Podobně při řazení ve vzestupném pořadí hodnot řetězců:

Ivanov Ivan, Petrov Petr, Ivanov Andrej

výsledek by měl být:

Ivanov Andrej, Ivanov Ivan, Petrov Petrov

Zde se řádek „Andrey Ivanov“ přesunul na začátek, protože porovnávání řetězců se provádí znak po znaku. Oba řádky začínají stejnými znaky „Ivanov“. Protože symbol „A“ ve slově „Andrey“ je v abecedě dříve než symbol „I“ ve slově „Ivan“, bude tento řádek umístěn dříve.

Řazení v SQL dotazu

Chcete-li provést řazení, musíte do řetězce dotazu přidat příkaz ORDER BY. Po tomto příkazu je uvedeno pole, kterým se řazení provádí.

Pro příklady používáme zboží tabulky zboží:

č
(Číslo položky)
titul
(Název)
cena
(cena)
1 Mandarinka50
2 Vodní meloun120
3 Ananas80
4 Banán40

Údaje jsou zde již seřazeny podle sloupce "num". Nyní vytvoříme dotaz, který zobrazí tabulku s produkty seřazenými v abecedním pořadí:

VYBRAT * OD zboží OBJEDNEJTE PODLE titulu

VYBRAT * ZE zboží – určuje výběr všech polí z tabulky zboží;

ORDER BY – příkaz pro řazení;

title – sloupec, podle kterého se bude řazení provádět.

Výsledek provedení takového požadavku je následující:

č titul cena
3 Ananas80
2 Vodní meloun120
4 Banán40
1 Mandarinka50

Můžete také třídit podle libovolného pole tabulky.

Směr řazení

Ve výchozím nastavení příkaz ORDER BY seřadí vzestupně. Chcete-li ručně ovládat směr řazení, použijte klíčové slovo ASC (vzestupně) nebo DESC (sestupně) za názvem sloupce. Chcete-li tedy zobrazit naši tabulku v sestupném pořadí cen, musíte položit dotaz takto:

VYBRAT * OD zboží OBJEDNEJTE DLE CENY POPIS

Seřadit podle vzestupné ceny bude:

VYBRAT * OD zboží OBJEDNEJTE DLE ceny ASC

Řazení podle více polí

SQL umožňuje řazení podle více polí najednou. Chcete-li to provést, po příkazu ORDER BY jsou požadovaná pole označena oddělenými čárkami. Pořadí výsledku dotazu bude nakonfigurováno ve stejném pořadí, ve kterém jsou zadána třídicí pole.

sloupec1 sloupec2 sloupec3
3 1 C
1 3 C
2 2 b
2 1 b
1 2 A
1 3 A
3 4 A

Seřaďme tabulku podle následujících pravidel:

VYBRAT * Z mytable ORDER BY column1 ASC, column2 DESC, column3 ASC

Tito. první sloupec je vzestupný, druhý sestupný, třetí opět vzestupný. Dotaz seřadí řádky podle prvního sloupce a poté, aniž by došlo k porušení prvního pravidla, podle druhého sloupce. Pak také, aniž by došlo k porušení stávajících pravidel, podle třetího. Výsledkem bude soubor dat takto:

sloupec1 sloupec2 sloupec3
1 3 A
1 3 C
1 2 A
2 2 b
2 1 b
3 1 A
3 1 C

Pořadí příkazu ORDER BY v dotazu

Řazení řádků se nejčastěji provádí společně s podmínkou pro výběr dat. Příkaz ORDER BY je umístěn za podmínku výběru WHERE. Například vybíráme produkty s cenou nižší než 100 rublů, seřazené podle názvu v abecedním pořadí:

VYBRAT * OD zboží, KDE cena 100 OBJEDNAT PODLE ceny ASC

Poznámka:
Všechny články v aktuální kategorii výukových programů SQL používají příklady a problémy založené na trénovací databázi.

Podle první normální formy relačních databází by na pořadí řádků v tabulkách nemělo záležet. V praxi je ale často nutné informace před zobrazením na obrazovce třídit.

Klauzule ORDER BY je zodpovědná za řazení řádků načtených v dotazu SQL. Nachází se na samém konci žádosti:

VYBRAT<Перечень столбцов>Z<Перечень таблиц>SEŘADIT PODLE<Условие сортировки>

Podmínka řazení určuje sloupce, podle kterých budou řazeny výsledné řádky tabulky:

ORDER BY col1, col2

Pořadí řazení v SQL

Existují 2 možnosti řazení: vzestupně a sestupně. Chcete-li v dotazu uvést typ řazení, za názvem sloupce zadejte klíčové slovo ASC (vzestupně) nebo DESC (sestupně), které určují vzestupné nebo sestupné pořadí. Výchozí typ je ASC:

ORDER BY col1 -- další klauzule bude ekvivalentní ORDER BY col1 ACS

Je také možné zadat různé pořadí pro různé sloupce:

ORDER BY col1 DESC, col2 ASC

Chcete-li materiál konsolidovat, vyřešte problém ve vzdělávací databázi:

Potřebujete získat seznam ID zaměstnanců, seřazený podle skupiny ve vzestupném pořadí a data přijetí, od nejnovějších po nejstarší.

SELECT id, Group, Hire_date FROM Zaměstnanci ORDER BY Group, Hire_date DESC

Doplňme syntaxi příkazu SELECT o klauzuli ORDER BY (svislá čára znamená, že je třeba vybrat jednu z možností):

SELECT [TableName.]ColumnName[, [TableName.]ColumnName2 ...] FROM [[DatabaseName.]SchemaName.]TableName ColumnName [, [TableName.]ColumnName2 ...]]

  • Vpřed >

Pokud vám pomohly materiály z office-menu.ru, podpořte projekt, abychom jej mohli dále rozvíjet.

Klauzule ORDER BY v Accessu třídí záznamy vrácené dotazem ve vzestupném nebo sestupném pořadí hodnot zadaných polí.

Syntax

VYBRAT pole_seznam
Z stůl
KDE podmínka_výběru
[, pole2 ][, ...]]]

Příkaz SELECT obsahující klauzuli ORDER BY obsahuje následující prvky:

Poznámky

Klauzule ORDER BY je volitelná. Mělo by se používat, když potřebujete zobrazit data v setříděné podobě.

Výchozí řazení je vzestupné (A až Z, 0 až 9). Dva příklady níže ukazují řazení jmen zaměstnanců podle příjmení.

SELECT Příjmení, Jméno
OD ZAMĚSTNANCŮ
OBJEDNAT PODLE Příjmení;
SELECT Příjmení, Jméno
OD ZAMĚSTNANCŮ
OBJEDNAT PODLE Příjmení ASC;

Chcete-li seřadit v sestupném pořadí (Z až A, 9 až 0), přidejte vyhrazené slovo DESC na konec každého pole, podle kterého chcete záznamy seřadit. Níže uvedený příklad seřadí jména zaměstnanců v sestupném pořadí podle platu.

SELECT Příjmení, Plat
OD ZAMĚSTNANCŮ
OBJEDNAT PODLE Mzdu DESC, Příjmení;

Pokud v klauzuli ORDER BY zadáte pole, které obsahuje data typu Memo nebo objekty OLE, dojde k chybě. Databázový stroj Microsoft Access nepodporuje řazení podle těchto typů polí.

Klauzule ORDER BY je obvykle posledním prvkem v příkazu SQL.

Do klauzule ORDER BY můžete zahrnout další pole. Záznamy jsou nejprve seřazeny podle pole uvedeného jako prvního v klauzuli ORDER BY. Záznamy se stejnými hodnotami prvního pole jsou pak seřazeny podle druhého zadaného pole a tak dále.

říct přátelům