CalculatoareTipuri de fișiere

SQL distincte: descriere, exemple, proprietăți

De multe ori, atunci când utilizați SQL pentru a prelua date din tabele, utilizatorul primește date redundante este existența unui duplicat rânduri absolut identice. Pentru a evita această situație, utilizați SQL argument distinct în propoziția Select. Acest articol va discuta exemple de utilizare a acestui argument, precum și situațiile în care cererea ar trebui să fie abandonate de argumentul.

Înainte de a continua să ia în considerare exemplele specifice, de a crea baza de date necesară o pereche de tabele.

masa de pregătire

Imaginați-vă că avem o bază de date stochează informații despre tapet prezentate în două tabele. Acest tabel oboi (tapet) cu câmpuri id (identificator unic), de tip (tip de tapet -. Hârtie, vinil, etc), culoare (culoare), struct (structură) și prețul (prețul). Și tabelul Ostatki (reziduuri) cu câmpuri id_oboi (o referire la identificatorul unic în tabelul Oboi) și numărul de (numărul de role în stoc).

Completați tabelul de date. În tabelul de mai adăuga tapet 9 înregistrări:

oboi

id

tip

culoare

struct

preț

1

hârtie

multicolor

în relief

56.9

2

hârtie dublu stratificat

bej

neted

114.8

3

vinilin

portocaliu

în relief

504

4

lână

bej

în relief

1020.9

5

hârtie dublu stratificat

bej

neted

150.6

6

hârtie

multicolor

neted

95.4

7

vinilin

maro

neted

372

8

lână

alb

în relief

980.1

9

pânză

roz

neted

1166.5

Tabelul cu rămâne - și nouă înregistrări:

Ostatki

id_oboi

conta

1

8

2

12

3

24

4

9

5

16

6

7

7

24

8

32

9

11

Vom proceda la descrierea ordinii distincte în SQL.

Loc distinct în Select clauza

Argumentul distinct trebuie plasat imediat după Select cuvântul cheie în interogări. El a aplicat toate coloanele specificate în propoziție Select, deoarece acesta va fi exclus din rezultatul interogării final este siruri de caractere absolut identice. Astfel, odată ce este suficient pentru a specifica atunci când scrieți SQL «selectați distinct» cerere. Excepția este utilizarea de diferite funcții agregate în interiorul care arata la un pic mai târziu.

Trebuie amintit faptul că cea mai mare parte a bazei de date și nu recunoaște tipul de cerere:

SELECT Ostatki.Count distincte, Oboi distincte. *

DE LA oboi

INTERIOARĂ TE Ostatki PE Oboi.id = Ostatki.id_oboi

Acolo nu a fost considerat un argument de mai multe ori sau o dată specificată, dar înainte de a doua, a treia sau o altă coloană selectată. Veți primi o eroare referindu-se la o eroare de sintaxă.

Aplicație interogări distincte în standardul

Este evident că, cu mese adecvate structura cladirii si umplându-le într-un singur tabel exclusă situația în care există șiruri absolut identice. Prin urmare, executarea interogare «Select distincte *» cu o probă de un tabel este impracticabilă.

Luați în considerare o situație în care trebuie să știm ce tip avem tapet, doar pentru comoditate, pentru a sorta în funcție de tipul:

SELECT Oboi.type

De la comanda Oboi în funcție de tipul

Și obține rezultatele:

tip

hârtie

hârtie

hârtie dublu stratificat

hârtie dublu stratificat

vinilin

vinilin

pânză

lână

lână

După cum se vede în tabel sunt rânduri duplicate. Dacă adăugăm la propunerea Select distincte:

SELECT Oboi.type distincte

De la comanda Oboi în funcție de tipul

vom obține rezultatul fără repetiție:

tip

hârtie

hârtie dublu stratificat

vinilin

pânză

lână

Astfel, în cazul în care introduceți corect datele într-un tabel, apoi imediat după un apel telefonic sau o cerere de cumpărători putem răspunde că tapet lichid, fibra de sticla si tapet acrilic disponibile în magazin nu sunt. Având în vedere faptul că gama de magazine este, de obicei, nu se limitează la o sută de tapet, vizualiza lista tipurilor de non-unice ar fi destul de muncă intensivă.

Aplicarea funcțiilor agregate distincte în cadrul

Argumentul distinct SQL poate fi utilizat cu orice funcție agregată. Dar pentru Min și Max aplicarea acesteia va avea nici un efect, dar atunci când se calculează suma sau valoarea medie este rareori o situație în care nimeni nu ar trebui să ia în considerare repetițiile.

Să presupunem că vrem să verifice capacitatea depozitul nostru și de a trimite această solicitare, calculează numărul total de bobine în stoc:

SELECT sum (Ostatki.count)

DE LA Ostatki

Cererea va da răspunsul 143. În cazul în care, cu toate acestea, vom schimba la:

sum SELECT (Ostatki.count distinct)

DE LA Ostatki

obținem total 119, ca imagine de fundal pentru numerele de partea 3 și 7 sunt în stoc în aceeași cantitate. Cu toate acestea, este evident că răspunsul este greșit.

Cel mai des folosit în SQL Count funcție distinctă. Deci, putem găsi cu ușurință cât de multe tipuri unice de tapet, avem:

SELECT COUNT (Oboi.type distincte)

DE LA oboi

Și a obține rezultatul 5 - hârtie obișnuită și vinil dublu strat și material nețesut. Cu siguranță văzut toate anunțurile, cum ar fi: „Doar avem peste 20 de tipuri diferite de tapet“, prin care se înțelege că acest magazin nu este doar câteva zeci de role și o varietate de tipuri de tapet moderne.

Este interesant faptul că, în aceeași interogare, puteți specifica mai multe funcții cum ar fi Contele atribut DISTINCT, și fără ea. Aceasta este singura situație în care în mod distinct Select'e poate fi prezent de mai multe ori.

Când să renunțe la utilizarea argumentului

Din utilizarea SQL argument distinct ar trebui să fie abandonată într-una din cele două cazuri:

  1. Efectuați o selecție de tabele și sunt încrezători în valoarea unică pe fiecare. În acest caz, utilizarea argumentul este inadecvat, deoarece este o sarcină suplimentară pe server sau client (în funcție de tipul de SGBD).
  2. Ți-e frică de a pierde datele. Să ne explicăm.

șeful vă cere să presupunem că lista de tapet pe care le aveți, cu indicarea numai două coloane - tipul și culoarea. Din obișnuință, vă dau un argument distinct:

SELECT Oboi.type distincte, Oboi.color

DE LA oboi

COMANDA PRIN Oboi.type

Și - pierde anumite date:

tip

culoare

hârtie

multicolor

hârtie dublu stratificat

bej

vinilin

maro

vinilin

portocaliu

pânză

roz

lână

bej

lână

alb

Acesta poate da impresia că tapet de hârtie (convențională și dual-layer) am doar o singură minte, de fapt, chiar și în tabelul nostru mic de două articol (fără rezultat distincte):

tip

culoare

hârtie

multicolor

hârtie

multicolor

hârtie dublu stratificat

bej

hârtie dublu stratificat

bej

vinilin

maro

vinilin

portocaliu

pânză

roz

lână

alb

lână

bej

Prin urmare, la fel ca în scris, orice solicitare cu necesitatea distinctă argument să fie atent și competent să decidă cu privire la aplicarea sa, în funcție de sarcina.

alternative distincte

Spre deosebire de argumentul distincte - toate argumentele. În cererea sa sunt stocate rânduri duplicate. Dar, ca baza de date implicită și constată că este necesar să se afișeze toate valorile, argumentul All - este mai degrabă un calificativ decât argumentul funcției actuale. Sperăm că ați înțeles acum că distincte (SQL) este utilizat. Descriere vă oferă informații complete cu privire la fezabilitatea utilizării acestui argument în rezolvarea unor probleme. La urma urmei, după cum sa dovedit, chiar și un astfel de argument simplu în aplicarea sa ascunde posibilitate foarte concret de a pierde unele date și afișează informații inexacte.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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