Най-често, когато се използва SQL за извличане на информация от таблици, потребителят получава излишни данни, които се състоят в наличието на абсолютно идентични повтарящи се низове. За да се изключи тази ситуация, се използва SQL различния аргумент в оператора Select. Тази статия ще обсъди примери за използване на този аргумент, както и ситуации, в които е по-добре да се откаже използването на аргумента. Преди да започнем да разглеждаме конкретни примери, ще създадем в базата данни няколко задължителни таблици.
Подготовка на таблици
Попълнете таблиците с данните. В таблицата с тапет добавете 9 записа:
Обои
id
тип
color
struct
цена
1
36)
Хартия
Многоцветен
Релефен
569
)
2
хартия двуслойна
бежов
гладка
)
1148
3
винил
оранжев
Подчертано
504
4
) Флизелин
бежов
5
хартия двуслойна хартия
1506
6
135)
Хартия
многоцветен
гладко
954
)
7
винил
кафяв
372
8
)
Подчертани
9801
9
Тъкан
Гладко
11665
В таблицата с останките - също и от
Остатки
id_oboi
брой
8
2
12
257) 5
16
6
7
)
7
24
8
32
9
11
Да започнем с описанието на поръчката използват различно в SQL.
Място в изречението Изберете различен
Трябва да се помни, че повечето СУБД не разпознават формуляра на вашата заявка:
ИЗБЕРЕТЕ отделна Остатки.Сточ, отделни Oboi. .id = Ostatki.id_oboi
Този аргумент се разглежда няколко пъти или се посочва веднъж, но преди да се избере втора, трета или друга колона. Ще получите грешка във връзка с неточности в синтаксиса.
Прилагане на отделни в стандартните заявки
ИЗБЕРЕТЕ Oboi.type ОТ Oboi поръчка по тип
И получаваме резултат :
книга
хартия
хартия двуслойна
)
хартия двуслойна
винил
винил
Тъкани
Флизелин
Флизелин
Както можете да видите, таблицата съдържа повтарящи се низове. Ако добавим към изречението, изберете различен:
ИЗБЕРЕТЕ отделен Oboi.type ОТ Oboi ред по тип
тогава получаваме резултата, без да повтаряме:
тип
Хартия
Двоен слой хартия
Винил
Тъкани
Флизелин
Таковаако компетентно въведени данни в таблицата, а след това веднага след повикване или искане на купувачи, можем да отговорим, че няма течни тапети, стъклария и акрилни тапети в магазина. Като се има предвид, че асортиментът в магазините обикновено не е ограничен до сто тапети, списъкът на не-уникалните типове би бил доста труден.
Прилагането на различни в рамките на агрегираните функции
SELECT sum (Ostatki.count) ОТ Ostatki
Ако променим на:
SELECT sum (отделен Ostatki.count) ОТ Ostatki
тогава ще получим само 119, защото тапета по членове 3 и 7 са на склад в една и съща сума. Очевидно е обаче, че този отговор е неправилен. Често SQL се използва с функцията Count. Така че, без затруднения, можем да разберем колко уникални видове тапети имаме изобщо:
SELECT count (отделен Oboi.type) ОТ OBOI
И получи резултата 5 - обикновен двоен слой хартия, винил, тъкани и бамбук. Вероятно всеки е видял типа на рекламата: "Само ние имаме повече от 20 вида различни тапети!", Което означава, че в този магазин не се правят десетки ролки и тапети.разнообразие от съвременни видове. Интересното е, че в една заявка можете да укажете няколко функции на Count с различния атрибут или без него. Това означава, че това е единствената ситуация, когато отделните в Select'e могат да бъдат няколко пъти.
Ако не искате да използвате аргумент
ИЗБЕРЕТЕ отделни Oboi.type, Oboi.color ОТ ОБОИ ПОРЪЧКА ОТ Oboi.type
И - загубете част от данните:
Тип
Цвят
Хартия
многоцветен
420) Хартия двуслойна
бежова
винил
кафяв
435)
Винил
оранжев
тъкани
розов
)
Flizelin
Бежово
Flizelin
Бяло
Mo същото впечатление, че хартиените тапети (обикновени и двуслойни) имат само един вид, въпреки че всъщност дори в нашата малка таблица от тях са два статии (резултатът без отделни):
тип
471)
цвят
Хартия
Многоцветен
Хартия
многоцветен
хартия двуслойна
Винил
Кафяв
винил
оранжев
тъкани
526)
Розов
флизелин
бял
флизелин
)
Бук
Следователно, както при написването на всяко искане, различният аргумент трябва да бъде точен и компетентно въпроси uvaty с употребата му в зависимост от задачата.