ComputersBestandstypen

SQL onderscheiden: beschrijving, voorbeelden eigenschappen

Vaak wanneer u SQL gebruiken om gegevens op te halen uit de tabellen, de gebruiker ontvangt de redundante data is het bestaan van een absoluut identieke dubbele rijen. Om deze situatie te voorkomen, gebruikt u SQL duidelijke argument in de zin Select. Dit artikel geeft voorbeelden van het gebruik van dit argument, maar ook situaties waarin de aanvraag moet worden opgegeven door het argument te bespreken.

Voordat we overgaan tot de specifieke voorbeelden beschouwen, maakt de vereiste een paar tafels database.

voorbereidingslijst

Stel je voor dat we een database slaat informatie over het behang in twee tafels. Deze tabel oboi (wallpaper) met id velden (unieke identificeerder), van het type (type behang -. Papier, vinyl, enz.), Kleur (kleur), een structuur (structuur) en de prijs (prijs). En lijst Ostatki (residuen) met id_oboi velden (een verwijzing naar de unieke identificator in de tabel Oboi) en aantal (het aantal rollen op voorraad).

Vul de gegevens tafel. In de tabel toe te voegen het behang 9 dossiers:

Oboi

id

type

kleur

struct

prijs

1

papier

veelkleurig

reliëf

56.9

2

Twee lagen papier,

beige

glad

114,8

3

vinyl

oranje

reliëf

504

4

vacht

beige

reliëf

1020,9

5

Twee lagen papier,

beige

glad

150.6

6

papier

veelkleurig

glad

95.4

7

vinyl

bruin

glad

372

8

vacht

wit

reliëf

980.1

9

doek

roze

glad

1166,5

De tabel met de overblijfselen - en negen dossiers:

Ostatki

id_oboi

tellen

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

We gaan naar de beschrijving van de verschillende orde in SQL.

Plaats onderscheiden in de Select-component

duidelijke argument moet onmiddellijk na de Select zoekwoord in de query's worden geplaatst. Hij toegepast op alle in de zin Select columns, omdat het zal worden uitgesloten van de uiteindelijke vraag resultaat is absoluut identiek strings. Zo, een keer is genoeg om aan te geven bij het schrijven van SQL «afzonderlijk selecteren» aanvraag. De uitzondering is het gebruik van verschillende in statistische functies die later kijken naar een beetje.

Men mag niet vergeten dat de meeste van de database en niet uw type verzoek te herkennen:

SELECT verschillende Ostatki.Count onderscheiden Oboi. *

FROM Oboi

BINNEN SLUIT Ostatki ON Oboi.id = Ostatki.id_oboi

Er werd niet beschouwd als argument meerdere malen of eenmaal opgegeven, maar voordat de tweede, derde of een andere geselecteerde kolom. U krijgt een foutmelding verwijst naar een fout in de syntaxis te krijgen.

Application verschillende query's in standaard

Het is duidelijk dat met de juiste bouwwerk tafels en binnen een enkele tafel ze te vullen uitgesloten de situatie wanneer er absoluut identiek strings. Daarom is de uitvoering van een query «Selecteer onderscheiden *» met een monster van een tafel is onpraktisch.

Denk aan een situatie waarin we moeten weten wat voor soort we hebben behang, maar voor het gemak, om te sorteren op type:

SELECT Oboi.type

FROM Oboi order type

En krijgen de resultaten:

type

papier

papier

Twee lagen papier,

Twee lagen papier,

vinyl

vinyl

doek

vacht

vacht

Zoals te zien is in de tabel zijn er dubbele rijen. Als we het voorstel toe te voegen Selecteer onderscheiden:

SELECT afzonderlijke Oboi.type

FROM Oboi order type

krijgen we het resultaat zonder herhaling:

type

papier

Twee lagen papier,

vinyl

doek

vacht

Dus, als de juiste gegevens in te voeren in een tabel, dan direct na een telefoontje of een verzoek van de kopers kunnen we antwoorden dat de vloeistof behang, glasvezel en acryl behang verkrijgbaar in de winkel niet. Gezien het feit dat het aanbod van winkels meestal niet beperkt is tot honderd behang, bekijk de lijst van de niet-unieke types nogal arbeidsintensief zou zijn.

Toepassing afzonderlijke statistische functies binnen

SQL afzonderlijke argument kan worden gebruikt met elke statistische functie. Maar voor de Min en Max zijn toepassing zal geen effect hebben, maar bij de berekening van de som of de gemiddelde waarde is zelden een situatie waar niemand zou moeten rekening houden met de herhalingen.

Stel dat we de capaciteit van ons magazijn te controleren en om dit verzoek te sturen, berekent het totale aantal windingen in voorraad:

SELECT sum (Ostatki.count)

FROM Ostatki

Verzoek zal het antwoord 143. Indien echter, zullen we veranderen te geven:

SELECT sum (afzonderlijke Ostatki.count)

FROM Ostatki

krijgen we de totale 119, als achtergrond voor onderdeelnummers 3 en 7 op voorraad in dezelfde hoeveelheid. Het is echter duidelijk dat het antwoord fout is.

Het meest gebruikt in SQL aparte functie tellen. Dus, kunnen we gemakkelijk te weten komen hoeveel unieke soorten behang, hebben we:

SELECT count (afzonderlijke Oboi.type)

FROM Oboi

En krijg het resultaat van 5 - gewoon papier en double-layer vinyl en niet-geweven stof. Zeker allemaal gezien dat de advertenties zoals: "Alleen hebben we meer dan 20 verschillende soorten behang", waarmee wordt bedoeld dat deze winkel is niet slechts een paar dozijn broodjes en een verscheidenheid van behang moderne types.

Het is interessant dat in dezelfde query, kunt u meerdere taken aan te geven, zoals Count toeschrijven DISTINCT, en zonder. Dat is de enige situatie waarin onderscheiden in Select'e aanwezig meerdere malen kan zijn.

Wanneer het gebruik van het argument te verlaten

Uit het gebruik van SQL onderscheiden argument moet worden achtergelaten in een van de twee gevallen:

  1. U voert een selectie van tafels en hebben er alle vertrouwen in de unieke waarde van elk. In dit geval is het gebruik van het argument ongeschikt, omdat het een extra belasting van de server of client (afhankelijk van het type DBMS).
  2. Ben je bang om uw gegevens te verliezen. Laat ons uit te leggen.

Stel dat de baas vraagt u om een lijst van de wallpaper die je hebt, met de aanduiding van slechts twee kolommen - het type en kleur. Uit gewoonte, je een argument duidelijk te geven:

SELECT verschillende Oboi.type, Oboi.color

FROM Oboi

ORDER BY Oboi.type

En - verliezen enkele gegevens:

type

kleur

papier

veelkleurig

Twee lagen papier,

beige

vinyl

bruin

vinyl

oranje

doek

roze

vacht

beige

vacht

wit

Het kan de indruk wekken dat het papier behang (conventioneel en dual-layer) we hebben slechts een geest, in feite, zelfs in onze kleine tafel van twee artikel (resultaat zonder duidelijke) te geven:

type

kleur

papier

veelkleurig

papier

veelkleurig

Twee lagen papier,

beige

Twee lagen papier,

beige

vinyl

bruin

vinyl

oranje

doek

roze

vacht

wit

vacht

beige

Daarom, zoals in het schrijven van elk verzoek met het argument duidelijke behoefte aan een zorgvuldige en bevoegd om te beslissen over de toepassing ervan, afhankelijk van de taak te zijn.

alternatief onderscheiden

In tegenstelling tot het argument onderscheiden - All argument. In haar verzoekschrift dubbele rijen zijn opgeslagen. Maar als de standaard database en vindt dat het nodig is om alle waarden, het argument All weer te geven is - het is eerder een qualifier dan de eigenlijke functie argument. Wij hopen dat u begrijpt nu dat verschillende (SQL) wordt gebruikt. Beschrijving geeft u volledige informatie over de haalbaarheid van het gebruik van dit argument bij het oplossen van verschillende problemen. Immers, zo bleek, zelfs zo'n eenvoudige argument in de toepassing ervan verbergt zeer concrete mogelijkheid van verlies van een aantal gegevens en geven onjuiste informatie.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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