русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Использование множества таблиц в одном запросе


Дата добавления: 2014-12-01; просмотров: 621; Нарушение авторских прав


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

При операции соединения (join) таблицы перечисляются в предложении запроса FROM через запятую. Предикат запроса может ссылаться на любой столбец из соединяемых таблиц (обычно WHERE). Имена таблиц предшествуют через точку именам полей.

 

SELECT Customers.cname, Sales people.sname, Sales people.city

FROM Sales people, Customers

WHERE Sales people. city = Customers.city;

 

Это типичный пример, когда префиксы действительно необходимы (и в одной и в другой таблице поле- city). В дальнейшем префиксы используем по необходимости.

В запросе для каждого продавца из Sales people проводится проверка предиката.

Операция соединения таблиц посредством ссылочной целостности

Допустим, что между таблицами существует связь по полю snum- номер продавца (за каждым покупателем закреплен продавец).

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

 

SELECT Customers cname, Salespeople.sname

FROM Customers, Salespeople

WHERE Salespeople.snum = Customers.snum;

 

Поля snum не представлены в выходных данных, поскольку они не существенны как результаты. Подобным образом могут быть построены объединения нескольких таблиц (>2).

Иногда требуется построить запрос по двум копиям одной таблицы.

Здесь возникает проблема с именами. У копии должны быть другие имена. Проблема решается определением временных имен- алиасов в предложении FROM. Рассмотрим пример поиска пар продавцов, имеющих одинаковый рейтинг:

SELECT first.sname, second.sname, first.rating



FROM Salespeople first, Salespeople second

WHERE first.rating = second.rating;

SQL не делает копии реально, но внешне это выглядит так, что Salespeople распадается на две копии с именами first и second.

После выполнения запроса алиасы утрачивают силу.

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

Есть простой способ исключить трехкратные повторения- сделать предикат асимметричным.

SELECT first.sname, first.rating

FROM Salespeople first, Salespeople second

WHERE first.rating = second.rating;

AND first.sname < second.sname;

Это уже полезный прием для работы.

Алиасы используют не только для копий запросов, но и просто при замене длинных имен короткими.



<== предыдущая лекция | следующая лекция ==>
Упорядочение выходных полей | Связанные подзапросы.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.619 сек.