Читаем SQL за 24 часа полностью

WHERE C.CUST_ID = O.CUST_ID AND P.PROD_ID = O.PROD_ID;

CUST_NAME PROD_DESC

LESLIE GLEASON КОСТЮМ ВЕДЬМЫ

SCHYLERS NOVELTIES ПЛАСТИКОВЫЕ ТЫКВЫ

WENDY WOLF ПЛАСТИКОВЫЕ ТЫКВЫ

GAVINS PLACE ФОНАРИ

SCOTTYS MARKET ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ

ANDYS CANDIES ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ

6 строк выбраны.

Обратите внимание на назначение таблицам псевдонимов и их использование в выражении ключевого слова WHERE.

Декартово произведение

Декартово произведение является результатом декартова связывания (CARTESIAN JOIN) или отсутствия связывания таблиц в запросе. Если в запросе указываются две или более таблиц и не используется их связывание, то в выводе будут присутствовать все возможные комбинации строк выбранных таблиц. Если таблицы большие, в результате получится, может быть, сотни, тысячи или даже миллионы записей. При использовании в запросе декартова произведения таблиц настоятельно рекомендуется использовать ключевое слово WHERE. Декартово произведение таблиц иначе называется кросс-связыванием (cross join).

Синтаксис соответствующей части оператора следующий.

FROM таблица1, таблица2 [,таблицаЗ ]

WHERE таблица1, таблица2 [,таблицаЗ ]

Вот пример кросс-связывания или ужасного декартова произведения таблиц.

SELECT E.EMP_ID, E.LAST_NAME, P.POSITION

FROM EMPLOYEE_TBL E,

EMPLOYEE_PAY_TBL P;

EMP ID

LAST NAM

POSITION

311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555 313782439 220984332 443679012 311549902 442346889 213764555

STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS GLASS WALLACE SPURGEON STEPHENS PLEW GLASS

MARKETING MARKETING MARKETING MARKETING MARKETING MARKETING TEAM LEADER TEAM LEADER TEAM LEADER TEAM LEADER TEAM LEADER TEAM LEADER SALES MANAGER SALES MANAGER SALES MANAGER SALES MANAGER SALES MANAGER SALES MANAGER SALESMAN SALESMAN SALESMAN SALESMAN SALESMAN SALESMAN SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER SHIPPER

313782439 220984332 443679012

GLASS WALLACE SPORGEON

SHIPPER SHIPPER SHIPPER

36 строк выбраны.

Ввиду того, что никакого связывания не было задано, данные были выбраны из двух отдельных таблиц. Не было указано, как связывать записи одной таблицы с записями другой, и поэтому сервер базы данных связал каждую запись одной таблицы со всеми записями другой. В каждой из этих таблиц было по 6 записей, поэтому в результате их получилось 36.

Чтобы разобраться в том, что такое декартово произведение таблиц, рассмотрите следующие примеры.

SQL> SELECT X FROM TABLE1;

X

-

A

В

С

D

4 строки выбраны

SQL> SELECT X FROM TABLE2;

X

-

A

В

С

D

4 строки выбраны.

SQL> SELECT TABLE1.X, TABLE2.X

2* FROM TABLE1, TABLE2;

X X

_ _

A A

В А

С А

D A

А В

в в

с в

D В

А С

в с

с с

D С

A D

В D

С D

D D

16 строк выбраны.

При связывании таблиц в запросе всегда следует быть внимательным. Если какие-то две таблицы в запросе окажутся не связанными и число записей в каждой из них будет около 1000, то их прямое произведение будет содержать уже 1000000 выводимых записей.

Резюме
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных