KompjûtersFile types

SQL ûnderskate: beskriuwing, foarbylden, eigenskippen

Faak as jo brûk meitsje fan SQL te heljen gegevens út 'e tafels, de brûker krijt de oerstallich gegevens is it bestean fan in absolút identike dûbele rigen. Om foar te kommen dat dizze situaasje, brûk SQL ûnderskieden argumint yn 'e sin selektearje. Dit artikel sil beprate foarbylden fan it brûken fan dit argumint, en ek situaasjes dêr't de tapassing moat wurde ferlitten troch it argumint.

Foardat wy fierder te beskôgje de spesifike foarbylden, meitsje de databank nedich in pear tabellen.

tarieding tafel

Yntinke dat wy hawwe der in databank bewarret ynformaasje oer it behang presintearre yn twa tafels. Dizze tabel oboi (wallpaper) mei id fjilden (unique identifier), fan it type (soarte fan wallpaper -. Papier, vinyl, ensfh), kleur (kleur), in struct (struktuer) en de priis (priis). En tafel Ostatki (resten) mei id_oboi fjilden (in ferwizing nei de unike identifier yn de tabel Oboi) en greve (it tal rollen op foarrie).

Folje de gegevens tafel. Yn de tabel heakjen de wallpaper 9 records:

Oboi

id

type

kleur

struct

priis

1

papier

multicolor

reliëf

56.9

2

papier double-layered

beige

glêd

114.8

3

vinyl

Oranje

reliëf

504

4

fleece

beige

reliëf

1020,9

5

papier double-layered

beige

glêd

150,6

6

papier

multicolor

glêd

95.4

7

vinyl

brown

glêd

372

8

fleece

white

reliëf

980,1

9

doek

pink

glêd

1166,5

De tafel mei de oerbliuwsels - en njoggen records:

Ostatki

id_oboi

telle

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Wy gean nei de beskriuwing fan 'e distinct folchoarder yn SQL.

Place ûnderskieden yn de Selektearje clause

distinct argumint moatte wurde pleatst fuort nei de Selektearje kaaiwurd yn de queries. Hy tapast nei alle kolommen oantsjutte yn 'e sin selektearje, om't it wurdt útsletten fan de definitive query resultaat is perfoarst gelikense snaren. Sa, ien kear is genôch foar opjaan by it skriuwen SQL «selektearje ûnderskieden» fersyk. De útsûndering is it brûken fan distinct binnen aggregaat funksjes dy't sjen op in bytsje letter.

Dêrby moat betocht wurde dat de measte fan de databank en net werkenne jo type fersyk:

SELECT ûnderskieden Ostatki.Count, ûnderskieden Oboi. *

FROM oboi

Binnenste JOIN Ostatki ON Oboi.id = Ostatki.id_oboi

Der waard net sjoen as argumint ferskate kearen of ienris oantsjutte, mar foardat it twadde, tredde of in oar selektearre kolom. Jo krije dan in flater ferwizing nei in flater yn syntaks.

Applikaasje ûnderskieden queries in standert

It leit foar de hân, dat mei in goede gebou struktuer tafels en ynfoljen se binnen ien tafel útsletten de situaasje as der hielendal gelyk snaren. Dêrom, de query útfiering «Selektearje ûnderskieden *» mei in stekproef fan ien tabel is impractical.

Betink in situaasje as wy moatte witte hokker type wy hawwe wallpaper, krekt foar gemak, te sortearjen troch type:

SELECT Oboi.type

FROM Oboi folchoarder by type

En krije de resultaten:

type

papier

papier

papier double-layered

papier double-layered

vinyl

vinyl

doek

fleece

fleece

As sjoen yn de tabel binne der dûbele rigen. As wy tafoegje it foarstel Selektearje ûnderskieden:

SELECT distinct Oboi.type

FROM Oboi folchoarder by type

Wy krije it resultaat sûnder werhelling:

type

papier

papier double-layered

vinyl

doek

fleece

Sa, as goed fieren gegevens yn in tabel, dan daliks nei in tillefoantsje of fersyk fan keapers kinne wy antwurd dat it floeibere wallpaper, glêstried en Acryl wallpaper beskikber yn 'e winkel net. Jûn dat it oanbod fan winkels wurdt meastal net beheind ta ien hûndert wallpaper, besjen de list fan it net-unike types soe hiel arbeid-yntinsyf.

Tapassing fan distinct aggregate funksjes binnen

SQL distinct argumint kin brûkt wurde mei alle aggregaat funksje. Mar foar de Min en Max syn tapassing sille hawwe gjin effekt, mar doe't it berekkenjen fan de som of de gemiddelde wearde is komselden in situaasje dêr't nimmen soe moatte rekken holden mei de werhellings.

Stel, wy wolle kontrolearje de kapasiteit fan ús magazyn en stjoere dit fersyk, computes it totale oantal Coils op voorraad:

SELECT sum (Ostatki.count)

FROM Ostatki

Fersyk sil jaan it antwurd 143. As, lykwols, wy sille feroarje nei:

SELECT sum (ûnderskieden Ostatki.count)

FROM Ostatki

wy krije de totale 119, as eftergrûn foar part nûmers 3 en 7 binne yn foarrie yn itselde bedrach. It is lykwols dúdlik dat it antwurd is ferkeard.

Meast faak brûkt yn SQL ûnderskieden funksje Count. Sa, wy kinne maklik fine út hoefolle unike soarten behang, wy hawwe:

SELECT count (ûnderskieden Oboi.type)

FROM oboi

En helje it resultaat fan 5 - gewoane papier en dûbel-laach vinyl en non-woven stof. Wiswier allegear sjoen de advertinsjes sa as: "Allinne wy ha mear as 20 ferskillende soarten fan wallpaper", dat wurdt bedoeld dat dy winkel is net allinnich in pear tsientallen rollen en in ferskaat oan wallpaper moderne typen.

It is nijsgjirrich, dat yn deselde query, kinne jo oanjaan meardere funksjes lykas greve attribute DISTINCT, en sûnder it. Dat is it iennichste situaasje dêr't ûnderskieden yn Select'e kin wêze oanwêzich meardere kearen.

Wannear't te ferlitten fan it brûken fan it argumint

Ut it brûken fan SQL distinct argumint moatte wurde ferlitten yn ien of twa gefallen:

  1. Jo fiere in seleksje fan de tafels en fertrouwe yn de unike wearde elk. Yn dit gefal, it brûken fan it argumint is ûnskiklik, want it is in ekstra lêst fan de tsjinner of kliïnt (ôfhinklik fan it type fan DBMS).
  2. Binne jim bang te ferliezen jo gegevens. Lit ús útlizze.

Stel dat baas freget jo om list de wallpaper dat jo hawwe, mei de yndikaasje fan mar twa kolommen - it type en kleur. Ut de gewoante, jo jouwe in argumint ûnderskieden:

SELECT ûnderskieden Oboi.type, Oboi.color

FROM oboi

ORDER BY Oboi.type

En - ferlieze wat gegevens:

type

kleur

papier

multicolor

papier double-layered

beige

vinyl

brown

vinyl

Oranje

doek

pink

fleece

beige

fleece

white

It kin jouwe de yndruk dat de papieren Wallpaper (konvinsjonele en dual-layer) wy hawwe mar ien geast, yn feite, sels yn ús lytse tabel fan twa artikel (resultaat sûnder distinct):

type

kleur

papier

multicolor

papier

multicolor

papier double-layered

beige

papier double-layered

beige

vinyl

brown

vinyl

Oranje

doek

pink

fleece

white

fleece

beige

Dêrom, sa as yn it skriuwen eltse fersyk mei it argumint ûnderskieden needsaak te wêzen foarsichtich en foech om beslute op syn programma, ôfhinklik fan 'e taak.

alternative ûnderskate

Yn tsjinstelling ta it argumint ûnderskieden - All argumint. Yn syn tapassing dûbele rigen wurde opslein. Mar as de standert databank en fynt dat it needsaaklik is om de werjefte fan alle wearden, it argumint All - it is earder in kwalifikaasjewedstriid as de feitlike funksje argument. Wy hoopje dat jo no begripe dat distinct (SQL) wurdt brûkt. Beskriuwing jouwe jo folsleine ynformaasje oer de helberheid fan it brûken fan dizze argumint by it oplossen fan ferskate problemen. Ommers, sa die bliken út, sels sa'n ienfâldige argumint yn syn tapassing berget hiel taastber mooglikheid fan ferlieze inkele gegevens en sjen litte miny-ôfbyldings ynformaasje.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 fy.birmiss.com. Theme powered by WordPress.