Similar presentations:
Многотабличные и вложенные запросы
1.
Многотабличные ивложенные запросы
2.
Перекрестное объединение таблицДля осуществления запроса сразу к нескольким
таблицам их имена перечисляются после ключевого
слова from через запятую.
SELECT * FROM tbl1, tbl2;
Двухтабличный запрос, называют также перекрестным
объединением. При таком объединении каждая строка
одной таблицы объединяется с каждой строкой другой
таблицы, создавая тем самым все возможные
комбинации строк обеих таблиц. Результирующая
таблица содержит число столбцов, равное сумме
столбцов в объединяемых таблицах. Число записей в
результирующей таблице определяется произведением
числа записей в таблицах, участвующих в
многотабличном запросе.
3.
Управление столбцамирезультирующей таблицы
Точно так же, как и в обычном операторе select, в
многотабличном операторе select можно управлять
числом столбцов в результирующей таблице. Для
этого столбцы, которые должны войти в
результирующую таблицу, перечисляются после
ключевого слова select через запятую.
SELECT name, letter FROM tbl1, tbl2;
4. Использование полных имен
Для того чтобы исключить неоднозначность, т.е.определить, поле id какой таблицы имеется в виду,
прибегают к полным именам столбцов. Полное имя
включает имена таблицы и столбца, разделенные
точкой.
SELECT tbl1.id, tbl1.name, tbl2.letter FROM tbl1, tbl2;
Для символа "*", указывающего на необходимость
выборки всех столбцов таблицы, также можно
использовать полное имя: tbl1.* и tbl2.*.
SELECT tbl1.*, tbl2.* FROM tbl1, tbl2;
SELECT tbl1.* FROM tbl1, tbl2;
5.
Полные имена можно использовать для обращения нетолько в пределах одной базы данных, но и для
объединения таблиц из двух разных баз данных. Для
этого полное имя столбца предваряется именем базы
данных. Если таблицы tbl1 и tbl2 расположены в базах
данных db1 и db2, то к столбцам name и letter можно
обратиться по именам db1.tbl1.name и db2.tbl2.letter
соответственно. При этом названия таблиц следует
также записывать полным именем: db1 .tbl1 и db2.tbl2
6. Назначение псевдонимов
При работе с результирующей таблицей в прикладныхпрограммах часто прибегают к назначению
псевдонимов при помощи оператора as. В листинге
полному имени tbl1.id назначается псевдоним id,
имени tbl1.name – name, а tbl2.letter – letter.
SELECT tbl1.id AS id, tbl1.name AS name, tbl2.letter As
letter FROM tbl1, tbl2 WHERE tbl1.id = tbl2.id;
7. Назначение псевдонимов таблицам
Оператор as может использоваться не только дляназначения псевдонимов столбцам но и для назначения
псевдонимов таблицам. В листинге таблицам tbl1 и tbl2
назначаются псевдонимы t1 и t2 соответственно.
SELECT t1.id, t1.name, t2.letter
FROM tbl1 AS t1, tbl2 AS t2 WHERE t1.id = t2.id;
Замечание
После назначения псевдонимов таблицам, участвующим
в запросе, использовать исходные имена таблиц в
конструкциях where, group by, order by и списке
столбцов после ключевого слова select уже не
допускается.