Najpogosteje, ko uporabite SQL za vzorčenje informacij iz tabel, uporabnik prejme odvečne podatke, ki so sestavljeni iz popolnoma enakih ponavljajočih se nizov. Za izključitev te situacije je uporabljen ločen argument SQL v stavku Izberi. Ta članek bo obravnaval primere uporabe tega argumenta, pa tudi primere, v katerih je bolje zavrniti uporabo argumenta. Preden začnemo razmišljati o posebnih primerih, bomo v bazi podatkov ustvarili nekaj zahtevanih tabel.
Priprava tabel
Izpolnite tabele s podatki. V tabeli z ozadjem dodajte 9 zapisov:
Oboi
id
tip
barva
struct
cena
1
36)
Papir
Večbarvni
Vtisnjeni
569
)
2
dvojna plast papirja
bež
gladka
)
1148
3
Vinil
Poudarjeno
504
4
) Flizelin
bež
5
papirni dvoslojni papir
1506
6
135)
Papir
Večbarvni
Smooth
954
)
7
vinil
rjava
gladka
372
8
Flizelin
)
Poudarjeno
9801
9
tkanina
Smooth
11665
V tabeli z ostanki - tudi dev
Ostatki
id_oboi
count
1
8
2
12
257) 5
16
6
7
)
7
24
8
32
9
11
Začnimo z opisom naročila uporabljajo v SQL ločeno.
Kraj v stavku Izberi ločeno
Ne smemo pozabiti, da večina DBMS ne pozna vašega obrazca za poizvedbo:
SELECT različni Ostatki.Count, različni Oboi. * OD OBOI INNER JOIN Ostatki ON Oboi .id = Ostatki.id_oboi
Ta argument se obravnava večkrat ali enkrat, vendar pred izbiranjem drugega, tretjega ali drugega stolpca. Prejeli boste napako s sklicevanjem na netočnosti v skladnji.
Uporaba ločenih standardnih poizvedb
IZBIRAj Oboi.type OD Oboi vrstnega reda
In dobimo rezultat :
Papir
Papir
Papir dvoslojni
)
Papir dvoslojni
vinil
vinil
Tkanine
Flizelin
Flizelin
Kot lahko vidite, tabela vsebuje ponavljajoče se nizove. Če dodamo stavku, izberite ločeno:
SELECT ločen Oboi.type OD Oboi vrstnega reda po tipu
potem dobimo rezultat brez ponavljanja:
tip
Papir
Papir dvoslojni
Vinil
Tkanine
Flizelin
Takoče kompetentno vnesete podatke v tabelo, potem takoj po pozivu ali zahtevi kupcev, lahko odgovorimo, da v trgovini ni tekočih tapet, steklenih izdelkov in akrilnih tapet. Glede na to, da asortiman v trgovinah običajno ni omejen na sto ozadij, bi bil seznam neenotnih vrst precej težaven.
Uporaba ločenih v agregatnih funkcijah
SELECT sum (Ostatki.count) FROM Ostatki
Na vprašanje bo odgovorjeno 143 Če se spremenimo v:
SELECT sum (različen Ostatki.count) IZ Ostatki
, potem bomo dobili samo 119, ker je ozadje po členih 3 in 7 na zalogi v enakem znesku. Vendar je očitno, da je ta odgovor napačen. Pogosto se SQL funkcija uporablja s funkcijo Count. Torej, brez težav, lahko ugotovimo, koliko edinstvenih tipov ozadij sploh imamo:
SELECT count (ločeno Oboi.type) IZ OBOI
In dobili rezultat 5 - navaden papir dvojni sloj, vinil, tkanina in bambus. Verjetno so vsi videli vrsto oglasa: "Samo imamo več kot 20 vrst različnih ozadij!", Kar pomeni, da v tej trgovini ni na ducate zvitkov in ozadja.različne sodobne vrste. Zanimivo je, da lahko v eni poizvedbi določite več funkcij števila z ločenim atributom ali brez njega. To pomeni, da je to edina situacija, ko je v Select'e različna lahko večkrat.
Če ne želite uporabiti argumenta
IZBIRAJTE ločene Oboi.type, Oboi.color OD OBOI ORDER PO Oboi.type
In - izgubite del podatkov:
Tip
barva
papir
večbarvna
420) Papir dvoslojni
bež
vinil
rjavi
435)
Vinil
oranžna
tkanina
roza
)
Flizelin
Bež
Flizelin
Bela
Mo enak vtis, da imamo papirnate tapete (navadne in dvoslojne) samo eno vrsto, čeprav v resnici celo v naši majhni tabeli zanje obstajata dva članka (rezultat brez ločenih):
tip
barva
Papir
Večbarvni
Papir
Večbarvni
Dvoplastni papir
Vinil
rjava
vinil
oranžna
tkanine
526)
roza
flizelin
bela
flizelin
)
Beech
Zato mora biti, tako kot pri pisanju katere koli zahteve, poseben argument natančen in kompetenten vprašanja uvaty z njegovo uporabo glede na nalogo.