русс | укр

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

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

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

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


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

Выборка из нескольких таблиц


Дата добавления: 2015-07-09; просмотров: 486; Нарушение авторских прав


 

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

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

 

Title Yearpub Publisher
     
     

 

Для этого СУБД предварительно должна выполнить слияние таблиц titles и publishers, а только затем произвести выборку из полученного отношения.

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

SELECT a.title, a.yearpub, b.publisher FROM titles AS a, publishers AS b WHERE a.pub_id=b.pub_id;

 

Пример, где одновременно задаются условия и соединение, и выборки (запроса ограничивается изданиями после 1996 года):

 

SELECT a.title, a.yearpub, b.publisher FROM titles AS a, publishers AS b WHERE a.pub_id = b.pub_id AND a.yearpub > 1996;

 

Следует обратить внимание на то, что когда в разных таблицах присутствуют одноименные поля, то для устранения неоднозначности перед именем поля указывается имя таблицы и знак "." (точка). (Рекомендуется имя таблицы указывать всегда!). Имя таблицы может быть заменено альтернативным логическим именем – синонимом, для чего используется связка AS в разделе FROM (…FROM titles AS a, publishers AS b…).

Естественно, имеется возможность производить слияние и более чем двух таблиц.

Например, чтобы дополнить описанную выше выборку именами авторов книг необходимо составить оператор следующего вида:



SELECT d.author, a.title, a.yearpub, b.publisher FROM titles AS a, publishers AS b, titleauthors AS c, authors AS d WHERE c.au_id = d.au_id AND c.title_id = a.title_id AND a.pub_id = b.pub_id AND a.yearpub > 1996; Альтернативный вариант соединения нескольких таблиц может использовать оператор JOIN в оазжеде FROM. Существует три варианта оператора:- INNER JOIN – соединение, при котором записи включаются в результирующий набор только в том случае, если в связных атрибутах будут найдены одинаковые значения;- LEFT JOIN – левое соединение, при котором все записи из первой (левой) таблицы включаются в результирующий набор, даже если во второй (правой) таблице нет соответствующих им записей;- RIGHT JOIN –правое соединение, при котором все записи из второй (правой) таблицы включаются в результирующий набор, даже если в первой (левой) таблице нет соответствующих им записей. Например, предыдущий пример можно реализовать с использованием оператора INNER JOIN следующим образом: SELECT d.author, a.title, a.yearpub, b.publisher FROM ((titles AS a INNER JOIN publishers AS b ON a.pub_id = b.pub_id) INNER JOIN titleauthors AS c ON c.title_id = a.title_id) INNER JOIN authors AS d ON c.au_id = d.au_id WHERE a.yearpub > 1996;


<== предыдущая лекция | следующая лекция ==>
Выборка данных | Вычисления внутри SELECT.


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


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

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

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


 


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

 
 

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

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