КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Язык структурированных запросов SQL. Соотнесенные подзапросы
Язык структурированных запросов SQL. Объединение таблиц. Упорядочивание с помощью оператора Null Упорядочивание агрегатных групп ORDER BY может кроме того, использоваться с GROUP BY для упорядочения групп. Если это так, то ORDER BY всегда приходит последним. Перед сгруппированием вывода, порядок групп был произвольным; и мы, теперь, заставим группы размещаться в последовательности: SELECT snum, odate, MAX (amt) FROM Orders GROUP BY snum, odate GROUP BY snum; Упорядочивание вывода по номеру столбцаВместо имен столбца, вы можете использовать их порядковые номера для указания поля используемого в упорядочении вывода. Эти номера могут ссылаться не на порядок столбцов в таблице, а на их порядок в выводе. Другими словами, поле упомянутое в предложении SELECT первым, для ORDER BY - это поле 1, независимо от того каким по порядку оно стоит в таблице: SELECT sname, comm FROM Salespeople GROUP BY 2 DESC;Если имеются пустые значения (NULL) в поле которое вы используете для упорядочивания вашего вывода, они могут или следовать или предшествовать каждому другому значению в поле.
SELECT * FROM Customers, Salespeople // декартово произведение таблиц WHERE Customers.city = Salespeople.city
Каждому покупателю будет соответствовать несколько продавцов, находящихся с ним в одном городе. Для сравнения можно использовать любой оператор сравнения.
Объединения таблиц через ссылочную целостность.
SELECT Customers.cname, Salespeople.sname FROM Customers, Salespeople WHERE Salespeople.snum = Customers.snum
Результат – таблица, в которой объединены имена заказчиков и соответствующих им продавцов. Столбцы, которые используются для определения вывода, в сам вывод не попадают.
Объединения, которые используют условия, основанные на равенствах – объединения по равенству. Наиболее общий вид объединений.
SELECT onum, cname, Orders.cnum, Orders.snum FROM Salespeople, Customers, Orders WHERE Customers.city <> Salespeople.city AND Orders.cnum = Customers.cnum AND Orders.snum = Salespeople.snum
Результат вывода – заказчик и продавец в разных городах. Объединения трех таблиц.
1) Объединения с использованием WHERE 2) Объединения с использованием оператора JOIN
INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN
SELECT * FROM Orders INNER JOIN Customers ON Orders.cnum = Customers.cnum
3) Объединение таблицы с собой – объединение двух копий одной и той же таблицы
SELECT first.cname, second.cname, first.rating FROM Customers first, Customers second WHERE first.rating = second.rating // пары покупателей с одним рейтингом AND first.cnum < second.cnum
В этом примере используются псевдонимы. ПРОПУЩЕНО
SELECT * FROM Orders WHERE snum = (SELECT snum FROM Salespeople WHERE sname ‘Иванов’) ПРОПУЩЕНО
Можно использовать ключевое слово.
SELECT * FROM Orders WHERE amt > (SELECT AVG(amt) FROM Orders) // все продажи, имеющие значения больше среднего
Можно использовать подзапросы, которые выводят один столбец и несколько строк, если использовать специальный оператор IN.
SELECT * FROM Orders WHERE snum IN (SELECT snum FROM Salespeople WHERE city = ‘Брянск’)
Подобно можно использовать подзапросы в предложении… ПРОПУЩЕНО Составные запросы используются часто, т.к. не всегда можно сохранить ПРОПУЩЕНО
В соотнесенном подзапросе происходит обращение ПРОПУЩЕНО
SELECT * FROM Customers out WHERE 20.10.07 IN (SELECT odate FROM Orders into WHERE out.cnum = into.cnum)
Внутренний запрос должен выполняться отдельно для каждого ПРОПУЩЕНО Строка внешнего запроса, для которого выполняется внутренний запрос, называется текущей строкой кандидата. С помощью соотнесенных подзапросов можно выполнять сложные операции.
SELECT snum, sname FROM Salespeople WHERE 1 < (SELECT count(*) FROM Customers WHERE Customers.snum = Salespeople.snum)
Список продавцов, у которых больше одного покупателя.
Дата добавления: 2015-05-09; Просмотров: 874; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |