|
Программирование >> Руководство по sql
Псевдонимы в списке таблиц улучшают читаемость запросов Чтобы ускорить ввод запросов и сделать их более понятными, в списке таблиц можно определить псевдонимы таблиц (сокращенные имена). Это особенно полезно при выполнении объединения по столбцам с одинаковыми именами, когда всякий раз при их использовании приходится указывать имена соответствующих таблиц. Вот как можно использовать псевдонимы в запросе, с помощью которого находятся авторы, живущие в одном городе с каким-либо издателем: SQL: select au lname, au fname from authors a, publishers p where a.city = p.city Результат: au Iname au fname Carson Cheryl Bennet Abraham Если вы хотите вывести и название города, соответствующий столбец нужно поместить в список выбора вместе с одним из псевдонимов таблиц. ОПРЕДЕЛЕНИЕ УСЛОВИЙ ОБЪЕДИНЕНИЯ Объединение обычно основывается на равенстве или совпадении значений в объединяемых столбцах. Объединение, основанное на равенстве, легко распознать по логическому оператору = в соответствующей объединению части предложения WHERE. Объединения также могут быть построены и на других условиях: любом логическом операторе или специальном операторе для определения внешнего объединения (outer join), которое мы обсудим далее. Помимо равенства, для задания условия могут использоваться следующие логические операторы:
В Transact-SQL также имеются операторы !> и !<, соответственно эквивалентные операторам <= и >=. На жаргоне реляционных баз данных объединения, построенные только на операторах сравнения, называются theta-объединениями. Объединения, основанные на равенстве Объединения, основанные на равенстве, как бы сшивают столбцы из участвующих в объединении таблиц. В следующем запросе находятся названия книг, связанные с определенным номером заказа: SQL: select title, t.title id, sonum, sd.title id from titles t, salesdetails sd where sonum =14 and t.title id = sd,title id Результат: title t.title id sonum sd.title id Computer Phobic and Non-Phobic PS1372 14 Individuals: Behavior Variations Life Without Fear PS2106 14 Prolonged Data Deprivation: PS3333 14 Four Case Studies Emotional Security: A New PS7777 14 Algorithm PS1372 PS2106 PS3333 PS7777 Так как в данном случае нет никакой необходимости в дублировании информации, из результата можно изъять один из столбцов объединения. Такое отображение называется естественным объединением (natural join). Предыдущий запрос примет следующий вид: SQL: select title, t.title id, sonum from titles t, salesdetails sd where sonum =14 and t.title id = sd.title id Результат: title title id sonum Computer Phobic and Non-Phobic Individuals: PS1372 Behavior Variations Life Without Fear PS2106 Prolonged Data Deprivation: Four Case Studies PS3333 Emotional Security: A New Algorithm PS7777 14 14 14 Теперь мы получили естественное объединение, так как столбец titleid не появляется в результатах дважды. В некоторых системах естественное объединение выполняется по умолчанию, что упрощает восприятие результатов. Не имеет значения, из какой таблицы включается столбец titlejd, однако в списке выбора вы должны обязательно указать его принадлежность определенной таблице. Объединения, не основанные на равенствах Объединения, не основанные на равенствах, могут быть описаны в терминах используемых в них условий, например объединение меньще чем , объединение больще чем и т.д. В следующем примере объединения типа меньще чем находятся все заказы, отправленные после получения денег: SQL: select distinct s.sonum, s.stor id, s.sdate, sd.date shipped from sales s, salesdetails sd where s.sdate < sd.date shipped and s.sonum = sd.sonum Результат: sonum 1 2 3 stor id 7066 7067 7131 sdate 13~.09~85~ 14.09.85 14.09.85 date shipped l5.09 .85 15.09.85 18.09.85
В следующем примере по столбцу titlejd объединяются таблицы titles и roysched: SQL: select t.title id, t.ytd sales, r.royalty from titles t, roysched r where t.title id = r.title id and t.yt5 sales >=r.lorange and t.ytd sales <= r.hirange
Объединение таблицы с самой собой: самообъединение Самоообъединение является другим вариантом объединения на основе равенства. При самообъединении сравниваются значения внутри столбца одной таблицы. Например, самообъединение можно использовать для поиска авторов, живущих в Окленде, Калифорния, и имеющих одинаковые почтовые коды. Так как в этом запросе таблица authors объединяется сама с собой, то она выступает сразу в двух ролях. Поэтому для различения этих ролей в списке таблиц предложения FROM ей нужно задать два разных псевдонима - aul и au2. Эти псевдонимы также будут использоваться при задании имен столбцов. Вот как выглядит этот запрос: SQL: select aul.au fname, aul.au lname, aul.zip
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |