Počítače, Typy souborů
SQL odlišný: popis, příklady, vlastnosti
Často při použití SQL k načtení dat z tabulek, uživatel obdrží redundantní data existence naprosto shodné duplicitní řádky. Aby se předešlo této situaci, použijte odlišný argumentu SQL ve větě Select. Tento článek se bude diskutovat o příklady použití tohoto argumentu, jakož i situace, v nichž by měla být podána opuštěné argument.
Než budeme pokračovat, aby zvážila konkrétní příklady, vytvoření databáze potřebné pár stolů.
příprava tabulky
Představme si, že máme databázi jsou uloženy informace o tapetu prezentovány ve dvou tabulkách. Tato tabulka oboi (tapety) s identifikačním poli (jedinečný identifikátor), typu (typ tapet. - papír, vinyl, atd), barva (barva), struct (konstrukce) a cen (cen). A stolní Ostatki (zbytky) s id_oboi polí (odkaz na jednoznačný identifikační kód v tabulce Oboi) a počtu (počet válců na skladě).
Vyplnit tabulku dat. V tabulce přidat tapetu 9 záznamů:
Oboi | ||||
id | typ | barva | struct | cena |
1 | papír | vícebarevný | reliéfní | 56.9 |
2 | Papír dvojvrstvý | béžový | hladký | 114,8 |
3 | vinyl | oranžový | reliéfní | 504 |
4 | fleece | béžový | reliéfní | 1020,9 |
5 | Papír dvojvrstvý | béžový | hladký | 150,6 |
6 | papír | vícebarevný | hladký | 95.4 |
7 | vinyl | hnědý | hladký | 372 |
8 | fleece | bílá | reliéfní | 980,1 |
9 | plátno | růžový | hladký | 1166,5 |
V tabulce s ostatky - a devět záznamů:
Ostatki | |
id_oboi | počítat |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Přistoupíme k popisu zřetelné řádu v SQL.
Umístěte zřetelný v klauzuli SELECT
odlišný argument by měl být umístěn bezprostředně po Vybrat klíčové slovo v dotazech. Se přihlásil do všech sloupců uvedených ve větě Select, protože budou vyloučeny z konečného výsledku dotazu je naprosto identické struny. Takže jakmile je dostatečně specifikovat při psaní SQL «select distinct» žádosti. Výjimkou je použití odlišných funkcí uvnitř kameniva, které vypadají na o něco později.
Je třeba mít na paměti, že většina z databáze a není schopen rozpoznat typ požadavku:
SELECT zřetelný Ostatki.Count, které je odděleno oboi. * Z Oboi INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
Tam nebylo považováno za tvrzení několikrát nebo jednou uvedeno, ale před druhým, třetím nebo jiného vybraného sloupce. Dostanete chybu s odkazem na chyby v syntaxi.
Použití odlišné dotazy na standardní
Je zřejmé, že se správnými stavební konstrukce stolů a jejich plnění v rámci jedné tabulky vyloučena situace, kdy jsou naprosto identické struny. Proto je spuštění dotazu «Vyberte odlišný *» vzorkem jednoho stolu je nepraktické.
Představme si situaci, kdy musíme vědět, jaký typ máme tapetu, jen pro pohodlí, třídit podle typu:
SELECT Oboi.type Z Oboi pořadí podle typu |
A získat výsledky:
typ |
papír |
papír |
Papír dvojvrstvý |
Papír dvojvrstvý |
vinyl |
vinyl |
plátno |
fleece |
fleece |
Jak je vidět v tabulce existují duplicitní řádky. Přidáme-li návrh Vyberte odlišný:
SELECT zřetelný Oboi.type Z Oboi pořadí podle typu |
dostaneme výsledek bez opakování:
typ |
papír |
Papír dvojvrstvý |
vinyl |
plátno |
fleece |
Tedy, pokud je správně zadat data v tabulce, pak ihned po telefonátu nebo požadavku odběratelů můžeme odpovědět, že kapalina tapety, skleněné vlákno a akrylové tapety k dispozici v obchodě nejsou. Vzhledem k tomu, že řada obchodů se obvykle není omezen na sto tapety, zobrazení seznamu nejedinečný typů by bylo docela náročné na pracovní sílu.
Použití různých agregačních funkcí v rámci
SQL odlišný argument může být použit s jakýmkoliv agregační funkce. Ale pro Min a Max své žádosti nebude mít žádný efekt, ale při výpočtu částky nebo průměrná hodnota je zřídka k situaci, kdy by nikdo vzít v úvahu opakování.
Předpokládejme, že chceme zjistit kapacitu našeho skladu a zaslat tento požadavek, spočítá celkový počet závitů na skladě:
SELECT sum (Ostatki.count) Z Ostatki |
Žádost bude dát odpověď 143. Pokud však změníme na:
SELECT součet (zřetelný Ostatki.count) Z Ostatki |
získáme úhrnem 119, jako tapetu Čísla dílů 3 a 7 jsou na skladě ve stejné výši. Je však zřejmé, že odpověď je špatně.
Nejčastěji se používá v SQL odlišné funkce Count. Takže můžeme snadno zjistit, jak mnoho jedinečných druhů tapet, máme:
SELECT count (zřetelný Oboi.type) Z Oboi |
A získat výsledek - 5: obyčejný papír a dvouvrstvou vinyl a netkané textilie. Jistě všichni viděli reklamy, jako například: „Pouze máme více než 20 různých druhů tapet,“ čímž se rozumí, že tento obchod není jen o pár desítek rolí a různé tapety moderních typů.
Je zajímavé, že ve stejném dotazu, můžete zadat celou řadu funkcí jako Count atributů DISTINCT a bez něj. To je jediná situace, kdy odlišné v Select'e mohou být přítomny několikrát.
Kdy opustit použití argumentu
Z použití odlišného argumentu SQL by mělo být upuštěno ve dvou případech:
- Je-li provést výběr tabulek a jsme přesvědčeni, v jedinečné hodnoty každého. V tomto případě použití argumentu je nevhodná, protože se jedná o dodatečný náklad na serveru nebo klienta (v závislosti na typu DBMS).
- Bojíte se ztráty dat. Pojďme vysvětlit.
Předpokládejme, že šéf požádá, abyste vypsat tapety, které máte s označením pouze dvou sloupců - typ a barvu. Ze zvyku si dát argument zřetelný:
SELECT zřetelný Oboi.type, Oboi.color Z Oboi ORDER BY Oboi.type |
A - ke ztrátě dat:
typ | barva |
papír | vícebarevný |
Papír dvojvrstvý | béžový |
vinyl | hnědý |
vinyl | oranžový |
plátno | růžový |
fleece | béžový |
fleece | bílá |
To může vyvolat dojem, že papír tapety (konvenční a dual-layer), máme pouze jednu mysl, ve skutečnosti, a to i v našem malém stolku dvou článku (za následek bez zřetelné):
typ | barva |
papír | vícebarevný |
papír | vícebarevný |
Papír dvojvrstvý | béžový |
Papír dvojvrstvý | béžový |
vinyl | hnědý |
vinyl | oranžový |
plátno | růžový |
fleece | bílá |
fleece | béžový |
Proto, jak je písemně jakýkoliv požadavek s argumentem výraznou musí být opatrní a kompetentní rozhodovat o jeho uplatňování, v závislosti na úkolu.
alternativní odlišný
V rozporu s tvrzením zřetelný - Všechny argumenty. Ve svém návrhu jsou duplicitní řádky uloženy. Ale jako výchozí databázi a zjistí, že je nutný k zobrazení všech hodnot, argument All - je to spíše kvalifikant než skutečný argument funkce.
Similar articles
Trending Now