Компјутери, Типови на датотеки
SQL различни: опис, примери, својства
Често кога ќе се користи SQL да се повратат податоците од табелите, корисникот добива на непотребни податоци е постоењето на апсолутно идентични дупликат редови. За да се избегне оваа ситуација, се користи SQL различни аргумент во реченицата Одберете. Оваа статија ќе разговараат примери на употреба на овој аргумент, како и ситуации во кои барањето треба да биде напуштен од страна на аргумент.
Пред да продолжиме да се разгледа на конкретни примери, создаде база на податоци потребни неколку маси.
маса подготовка
Замислете дека имаме база на податоци продавници информации за позадина презентиран во две маси. Оваа табела oboi (позадина) со ид полиња (единствен идентификатор), од типот (вид на позадина -. Хартија, винил, итн), боја (боја), на struct (структура) и цена (цена). И маса Ostatki (остатоци) со id_oboi полиња (повикување на единствен идентификатор во табелата Oboi) и бројот (бројот на ролни во акции).
Пополни табела на податоци. Во табелата додадете позадина 9 записи:
Oboi | ||||
id | тип | боја | struct | цена |
1 | хартија | двобоен | врежана | 56,9 |
2 | хартија двослоен | беж | непречено | 114,8 |
3 | винил | портокал | врежана | 504 |
4 | руно | беж | врежана | 1.020,9 |
5 | хартија двослоен | беж | непречено | 150.6 |
6 | хартија | двобоен | непречено | 95,4 |
7 | винил | Браун | непречено | 372 |
8 | руно | бела | врежана | 980,1 |
9 | крпа | розова | непречено | 1.166,5 |
Табелата со остатоци - и девет записи:
Ostatki | |
id_oboi | брои |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
Ние се продолжи со опис на посебен ред во SQL.
Место различни во Одберете клаузула
посебен аргумент треба да биде поставена веднаш по Избор на клучни зборови пребарувања. Тој се применува на сите колони наведени во реченицата Одберете, бидејќи тоа ќе биде исклучен од конечниот резултат на пребарување е апсолутно идентични жици. Така, еднаш е доволно за да се определи кога пишувате SQL «изберете различни» барање. Исклучок е употребата на различни внатрешноста агрегат функции кои изгледаат малку подоцна.
Треба да се запомни дека поголемиот дел од базата на податоци и не го препознава вашиот тип на барање:
SELECT различни Ostatki.Count, различни Oboi. * ОД oboi Внатрешниот ПРИДРУЖЕТЕ Ostatki ЗА Oboi.id = Ostatki.id_oboi |
Таму не се смета за аргумент неколку пати, еднаш одредено, но пред вториот, третиот или друг избрани колона. Вие ќе добиете грешка се однесува на грешка во синтаксата.
Примена различни прашања во стандард
Очигледно е дека со соодветна структура маси зграда и пополнување нив во рамките на една маса исклучи ситуација кога постојат апсолутно идентични жици. Затоа, извршување на барањето «Изберете различни *» со примерок од една маса е непрактично.
Размислете за ситуација кога треба да знаете што тип имаме позадина, само за погодност, за сортирање според типот:
Избери Oboi.type ОД Oboi цел по тип |
И да добијат резултатите:
тип |
хартија |
хартија |
хартија двослоен |
хартија двослоен |
винил |
винил |
крпа |
руно |
руно |
Како што се гледа од табелата има дупликат редови. Ако го додадеме на предлогот Изберете различни:
SELECT различни Oboi.type ОД Oboi цел по тип |
ние се добие резултат, без повторување:
тип |
хартија |
хартија двослоен |
винил |
крпа |
руно |
Така, ако правилно внесување на податоци во табела, а потоа веднаш по телефонски повик или барање на купувачите можеме да одговориме дека течноста позадина, фиберглас и акрилни позадина достапни во продавницата не се. Со оглед на тоа спектар на продавници обично не е ограничена само на сто позадина, видете ја листата на не-уникатни видови ќе биде доста напорни.
Примена на различни функции во рамките на агрегат
SQL различни аргумент може да се користи со било кој агрегат функција. Но, за неговата примена MIN и MAX нема да имаат ефект, но при пресметувањето на сумата или просечната вредност е ретко ситуација во која никој не би требало да се земе во предвид повторувања.
Да претпоставиме дека сакаме да се провери капацитетот на нашиот магацин и да испрати ова барање, го пресметува вкупниот број на намотки во парк:
SELECT збирот (Ostatki.count) ОД Ostatki |
Барањето ќе даде одговор 143. Ако, сепак, ние ќе се смени во:
Избери збирот (различни Ostatki.count) ОД Ostatki |
ние се добие вкупно 119, како позадина за дел број 3 и 7 се во акции во истиот износ. Сепак, очигледно е дека одговорот не е во ред.
Најчесто се користат во различни SQL функција Грофот. Значи, ние лесно може да се дознае колку уникатни видови на тапет, имаме:
Изберете брои (различни Oboi.type) ОД oboi |
И да се добие резултат од 5 - обична хартија и со двоен слој винил и неткаен материјал. Сигурно сите се види на рекламите, како што се: "Само ние имаме повеќе од 20 различни видови на тапет", со кој се подразбира дека оваа продавница не е само неколку десетина ролни и разни позадина модерните видови.
Интересно е тоа што во истиот пребарување, можете да наведете повеќе функции како Грофот припишуваат различни, и без неа. Тоа е единствената ситуација во која различни во Select'e можат да бидат присутни неколку пати.
Кога да се откаже од користењето на аргументот
Од употреба на SQL различни аргумент треба да се напушти во еден од двата случаи:
- Ќе се изврши избор на маси и се уверени во уникатна вредност секоја од нив. Во овој случај, употребата на аргументот е несоодветна, бидејќи тоа е дополнителен товар на серверот или клиентот (во зависност од видот на DBMS).
- Дали сте се плаши од губење на вашите податоци. Дозволете ни да се објасни.
Да претпоставиме дека газдата го прашува да се листа на позадина кои ги имате, со наведување на само две колони - видот и бојата. Од навика, да ви даде аргумент различни:
SELECT различни Oboi.type, Oboi.color ОД oboi Подреди по Oboi.type |
И - изгуби некои податоци:
тип | боја |
хартија | двобоен |
хартија двослоен | беж |
винил | Браун |
винил | портокал |
крпа | розова |
руно | беж |
руно | бела |
Тоа може да се добие впечаток дека позадина на хартија (конвенционални и dual-layer) ние имаме само еден ум, всушност, дури и во нашата мала маса на две член (резултат без разлика):
тип | боја |
хартија | двобоен |
хартија | двобоен |
хартија двослоен | беж |
хартија двослоен | беж |
винил | Браун |
винил | портокал |
крпа | розова |
руно | бела |
руно | беж |
Затоа, како што во писмена форма барање со посебна потреба аргумент за да се биде внимателен и надлежен да одлучува за неговата примена, во зависност од задачата.
алтернатива различни
Спротивно на аргументот различни - Сите аргумент. Во неговата примена се чуваат дупликат редови. Но, како што стандардно база на податоци и смета дека тоа е неопходно за да се прикаже сите вредности, аргументот на сите - тоа е повеќе од квалификациите од вистинскиот аргумент функција.
Similar articles
Trending Now