Связанные таблицы в datagridview

До сих пор все наши запросы обращались к одной таблице. Однако SQL позволяет в одном запросе обращаться к нескольким таблицам. Именно это свойство и сделало язык SQL столь популярным.

Полное имя столбца в таблице фактически состоит из имени таблицы, за которым идет точка и имя столбца. (По правде говоря, вначале еще указывается и имя пользователя, но это скорее относится к правам доступа и мы вернемся к этому позднее). Примеры имен:

Salespeople.snum Salespeople.city Orders.odate

До этого в запросах мы опускали имена таблиц, потому что мы запрашивали только одну таблицу. Если мы хотим связать столбцы разных таблиц, то их надо указать с именами Salespeople.city или Customers.city, чтобы сервер мог их различать.

Предположим вы хотите увидеть комбинации торговых агентов и заказчиков по городам.Это делается так:

SELECT Customers.cname, Salespeople.sname, Salespeople.city FROM Salespeople, Customers WHERE Salespeople.city = Customers.city таблицы Результат запроса: cname sname city -------------------- ------- ---------- ТОО Рога и копыта Иванов Москва ОАО "Валют-транзит" Егоров Караганда

т.к. поле city имеется в таблицах Торговые агенты и Заказчики, имена таблиц должны использоваться как префиксы.

Как работает этот запрос? SQL Server проверяет каждую комбинацию строк двух таблиц и проверяет их на условие указанное в предложении WHERE. Если эта комбинация удовлетворяет ему, то она выводится.

Для объединения таблиц можно использовать любые условия, а не только равенство. Например: SELECT Salespeople.sname, Customers.cname FROM Salespeople, Customers WHERE Salespeople.sname < Customers.cname AND Customers.rating < 200 Результат: sname cname -------- ------------------ Егоров ТОО Рога и копыта Иванов ТОО Рога и копыта Петров ТОО Рога и копыта Сидоров ТОО Рога и копыта Егоров ОАО "ООО" Иванов ОАО "ООО"

В принципе это не слишком полезный запрос. Он воспроизводит все комбинации имени продавца и имени заказчика так, что первый предшествует последнему в алфавитном порядке, а заказчик имеет рейтинг меньше 200.

Предположим, что мы хотим найти все заказы заказчиков, не находящихся в одном городе с агентом. Для этого требуется связать три таблицы:

SELECT Orders.onum, Customers.cname, Orders.cnum, Orders.snum FROM Salespeople, Customers, Orders WHERE Customers.city <> Salespeople.city AND Orders.cnum = Customers.cnum AND Orders.snum = Salespeople.snum Результат: onum cname cnum snum ----- ---------------------------------- ----- ----- 3001 ОАО "Валют-транзит" 2008 1007 3002 ОАО "ООО" 2007 1004 3005 Фирма ХХХ 2003 1002 3006 AО Бендер и К 2002 1007 3007 Концерн "Дети лейтенанта Шмидта" 2004 1002 3008 Clemens 2006 1001 3009 AО Бендер и К 2002 1003 3010 Концерн "Дети лейтенанта Шмидта" 2004 1002 3011 Clemens 2006 1001

Теперь вы можете строить запросы к нескольким таблицам одновременно. Вы можете устанавливать любые критерии отбора записей и условия связывания таблиц - собственно то ради чего и создавался SQL. Далее мы обсудим использование комбинаций запросов, где один запрос будет производить вывод, который будет управлять работой другого запроса.


Источник: http://www.firststeps.ru/sql/r.php?8



Закрыть ... [X]


Cached Вышивка гладью фруктов

Связанные таблицы в datagridview БСЭ 3 изд. том 24.II - СССР ч.3
Связанные таблицы в datagridview Браслеты на ногу от 1800 руб. Купить браслет на ногу
Связанные таблицы в datagridview ВЯЗАННЫЕ ТАПОЧКИ - СХЕМЫ ВЯЗАНИЯ - Вязание крючком и спицами
Связанные таблицы в datagridview Вышивка Лентами Видео Уроки Розы Валерия Соарес
Связанные таблицы в datagridview Вязание чепчика для новорожденного крючком (схемы)
Связанные таблицы в datagridview Вязаный подиум
Связанные таблицы в datagridview Дивертикулит. Причины, симптомы, диагностика и лечение
Как научиться шить. Быстрый способ научиться шить с нуля Как сделать МОЛОЧНЫЙ КОКТЕЙЛЬ своими руками в домашних Маски для домашней Обертывание глиной от целлюлита в домашних Пейзаж - Скачать схемы вышивки Пластиковые бутылки интересные поделки для сада