Najčešće kada se koristi SQL za uzorkovanje informacija iz tablica, korisnik prima redundantne podatke, koji se sastoje od apsolutno identičnih ponavljajućih nizova. Da biste isključili ovu situaciju, koristi se SQL različit argument u izrazu Select. Ovaj će članak raspravljati o primjerima korištenja ovog argumenta, kao io situacijama u kojima je bolje odbiti uporabu argumenta. Prije nego što počnemo razmatrati konkretne primjere, stvorit ćemo u bazi nekoliko potrebnih tablica.
Priprema tablica
Popunite tablice s podacima. U tablici s pozadinom dodajte 9 zapisa:
Oboi
id
tip
boja
struct
cijena
1
36)
Papir
šaren
reljefni
569
)
2
dvoslojni papir
bež
glatki
)
1148
3
Naglašeno
504
4
) Flizelin
bež
5
Papir dvoslojni papir
1506
6
135)
Papir
šaren
glatka
954
)
vinil
smeđa
glatka
372
8
Flizelin
)
naglašeno
9801
9
tkanina
glatko
11665
U tablici s ostacima - također dev '
Ostatki
id_oboi
count
1
8
2
12
257) 5
16
6
7
)
7
24
8
32
9
11
Počnimo s opisom narudžbe razlikovati u SQL-u.
Mjesto u rečenici Odaberite različito
Treba zapamtiti da većina DBMS-a ne prepoznaje vaš upit:
SELECT različiti ostatki.Count, različiti Oboi. * OD OBOI INNER JOIN Ostatki ON Oboi .id = Ostatki.id_oboi
Ovaj se argument razmatra nekoliko puta ili se navodi jednom, ali prije nego se odabere drugi, treći ili drugi stupac. Dobit ćete pogrešku u odnosu na netočnosti u sintaksi.
Primjena različitog u standardnim upitima
SELECT Oboi.type FROM Oboi poredak po vrsti
I dobili smo rezultat :
Papir
Papir
Papir dvoslojni
)
Papir dvoslojni
vinil
vinil
Tkanine
Flizelin
Flizelin
Kao što možete vidjeti, tablica sadrži nizove koji se ponavljaju. Ako dodamo rečenici, odaberite odvojeno:
ODABERITE različit Oboi.TIP IZ Oboi-a prema tipu
tada dobijemo rezultat bez ponavljanja:
tip
Papir
Papir dvoslojni
Vinil
Tkanine
Flizelin
Takavako kompetentno unesete podatke u tablicu, a zatim odmah nakon poziva ili zahtjeva kupaca, možemo odgovoriti da ne postoje tekuće pozadine, stakleni proizvodi i akrilne tapete u trgovini. S obzirom da asortiman u trgovinama obično nije ograničen na stotinu tapeta, popis ne-jedinstvenih vrsta bio bi prilično naporan.
Primjena različitih agregatnih funkcija
SELECT sum (Ostatki.count) FROM Ostatki
Na upit će biti odgovoreno 143 Ako promijenimo u:
SELECT suma (različiti Ostatki.count) iz Ostatki
onda ćemo dobiti samo 119 jer pozadina u člancima 3 i 7 su u zalihama u istom iznosu. Međutim, očito je da je ovaj odgovor netočan. Često se SQL razlikuje s funkcijom Count. Dakle, bez poteškoća, možemo saznati koliko jedinstvenih vrsta pozadina imamo uopće:
SELECT count (različiti Oboi.type) IZ OBOI
I dobiti rezultat 5 - obični papirni sloj, vinil, tkanina i bambus. Vjerojatno je svatko vidio vrstu oglasa: "Samo imamo više od 20 vrsta različitih pozadina!", Što znači da u ovoj trgovini nema desetaka rolni, a pozadinerazne moderne vrste. Zanimljivo je da u jednom upitu možete odrediti nekoliko funkcija Count s različitim atributom ili bez njega. To je, to je jedina situacija kada se razlikuje u Select'e može biti nekoliko puta.
Ako ne želite koristiti argument
SELECT distinct Oboi.type, Oboi.color IZ OBOI NALOGA Oboi.type
I - izgubite dio podataka:
Tip
boja
papir
šaren
420) Papir dvoslojni
bež
vinil
smeđi
435)
Vinil
narančasta
tkanine
ružičasta
)
Flizelin
Bež
Flizelin
Bijela
Mo isti dojam da papirne tapete (obični i dvoslojni) imaju samo jednu vrstu, iako u stvari čak iu našem malom stolu imamo dva članka (rezultat bez jasnog):
tip
471)
boja
Papir
Šaren
Papir
Šaren
Papir dvoslojni
vinil
smeđa
vinil
narančasta
tkanine
526)
Ružičasti
Flizelin
Bijeli
Flizelin
)
Beech
Stoga, kao i kod pisanja bilo kojeg zahtjeva, poseban argument mora biti točan i kompetentan pitanja uvaty s njegova uporaba, ovisno o zadatku.
Alternativa različita
Nadamo se da je sada jasno kada se koristi različita (SQL). Opis vam je dao punu informaciju o svrsishodnosti korištenja ovog argumenta u rješavanju različitih problema. Uostalom, kako se ispostavilo, čak i takav jednostavan argument u njegovoj primjeni prikriva vrlo opipljivu vjerojatnost gubitka podataka i prikazivanja netočnih informacija.