ПредишенСледващото

Най-често тя се нуждае, за да се получи съединение с общи колони от две таблици - първични и външни ключове. В този случай, състоянието на WHERE клауза равенство дадена колона от една маса и съответната колона на друга маса. Така един ред от таблица линии са свързани с друга в съответствие с общи стойности в съответните колони.

Пример: За всеки служител да се оттегли името си и името на отдела, в който той работи.

Имената на служителите са в s_emp маса, а наименованията на отделите са s_dept маса. Таблица s_emp са dept_id колона, която съдържа отдел номер на служителя и външен ключ във връзка с s_dept маса. Таблица s_dept също има колона, съдържаща номера на отдел - идентификация, тя е основният ключ s_dept на маса. Ние трябва за всеки служител от масата s_emp намерите номера му карта и след това намерете същото отдел броя в s_dept маса, а върху него да се определи името на отдела.

SELECT s_emp.last_name, s_dept.name

ОТ s_dept, s_emp

избрани 25 реда.

Забележете, че в горния пример, който се изброяват се предхождат от имената на таблиците, от които трябва да се избират на колоните. Фактът, че различни таблици могат да бъдат колони с едно и също име. Така например, в нашия пример и в s_emp маса и масата е s_dept колона име номер. За да укажете на сървъра каква маса да изберете колоните трябва да определите префикс под формата на името на масата, за всяко име на колона, която може да се тълкува двусмислено. Името на име на таблица и колона, разделени с точка по същото време. Ако не е посочен префикса, възниква грешка.

Пример: За всеки служител да се оттегли името си и името на отдела, в който той работи.

SELECT last_name, име

ОТ s_dept, s_emp

Грешка на ред 3:

ORA-00918: колона двусмислено формулирано

Ако едно и също име колоните в запитването не е, тогава имена на таблици, не е задължително да определи. Но това се препоръчва, когато пробата от няколко таблици в никакъв случай да посочват имената на таблиците, тъй като това увеличава производителността сървъра за обработка на заявки и подобрява яснотата на заявката.

Ако в допълнение към условията на връзка, трябва да се определят условията, които ограничават линии в пробите, тези условия са написани с И оператор.

Пример: Намерете името на отдела, както и името на региона, в който този отдел е за отдела №35.

SELECT s_dept.name, s_region.name

ОТ s_dept, s_region

Прогнозирането на всяко име на колона в името на съответната таблица може да отнеме време, особено ако заявката съдържа голям брой имена на колони, както и имена на таблици са дълги. Ето защо по-кратки псевдоними маса могат да бъдат използвани вместо имената. Alias ​​маса е уточнен след името на таблицата в ОТ клауза на масата и задава различно име в една конкретна заявка. Таблицата за използване псевдоними SQL позволява да се намали количеството на код, който намалява разхода на памет.

Таблица псевдоними могат да бъдат до тридесет знака, но колкото по-кратък са те, толкова по-добре. Ако определите маса псевдоними през ОТ клауза, тя трябва да се използва вместо името на таблицата в текста на искането.

Пример: За всеки клиент на фирмата, за да изберете своя номер, име, фамилия, търговската си представител, както и името на района, където се намира.

SELECT c.id, c.name, e.last_name, r.name

ОТ s_customer С, s_emp д, s_region г

КЪДЕТО c.sales_rep_id = e.id и c.region_id = r.id;

ID NAME LAST_NAME NAME

201 Unisports Giljum Южна Америка

202 ОВ Atheletics Нгуен Азия

203 Делхи Sports Нгуен Азия

204 Womansport Магий Северна Америка

Спортни стоки Дюма Азия 205 Кам е

206 Sportique Дюма Европа

208 Мюнх Sports Дюма Европа

209 Beisbol Si! Магий Северна Америка

210 Futbol Сонора Giljum Южна Америка

избрани 14 реда.

Забележете, че в примера по-горе съдържа три таблици, така че връзката е настроена на 2 условия. (Условия s_customer маса и s_emp съединение и състояние и s_customer s_region съединението на.) Във всеки случай, размерът на комбинирани съединение н състояние таблици трябва да бъде най-малко п-1, в противен случай ще получите декартови маси продукта.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!