|
Программирование >> Исключение дубликатов строк
Привести список всего персонала и количество лекций у каоюдого преподавателя . Вывести на экран дисплея все предметы и количество лекций по као/сдому предмету в понедельник . Показать всех игроков в боулинг и количество сыгранных ими игр . Вывести на экран игроков в боулинг и самую ваоюную сыгранную ими игру . Привести список всех видов мяса и число рецептов, в которых появляется каэ/сдый из них . Показать типы рецептов и количество рецептов в каждом из типов . Фильтры Теперь можно реально расширить наш набор инструментов для решения сложных проблем. В этой главе мы исследовали множество интересных способов использования подзапросов как фильтров в условии WHERE. Вот пример задач, которые можно решить, используя этот метод. Многие из этих задач уже были решены в пре-дыдуш,их главах, а теперь мы попробуем решить их альтернативным способом. Внимание! Ключевое слово (слова), которое можно использовать для решения задачи, стоит в скобках после формулировки запроса. Привести список клиентов, заказавших велосипеды . (IN) Вывести на экран дисплея клиентов, заказавших одеоюду или предметы первой необходимости . (= SOME) Вывести список всех клиентов, заказавших когда-либо велосипедный шлем . (IN) Найти всех клиентов, заказавших велосипед, но не заказавших шлем . (NOT EXIST) Какие товары никогда не заказывались? (NOT IN) Вывести список клиентов, которые подали заявки на эстрадных артистов, исполняюших музыку в стиле кантри или кантри-рок . (IN) Найти эстрадных артистов, отыгравших ангажементы для клиентов Бонниксен или Росалес . (= SOME) Вывести на экран дисплея агентов, которые не заказывали эстрадных артистов . (NOT IN) Вывести список эстрадных артистов, отыгравших ангажементы для клиентов Бонниксен или Росалес . (EXIST) Вывести на экран дисплея студентов, записавшихся на курс лекций во вторник . (IN) Показать студентов, которые имеют средний балл 85 и выше по курсу Искусство и также имеют средний балл 85 и выше по курсу Вычислительная техника . (EXISTS) Вывести на экран дисплея студентов, которые никогда не отказывались от курса лекций . (NOT IN) Привести список предметов, предлагаемых в среду . (IN) Вывести на экран дисплея капитанов команд с текущим средним количеством очков более высоким, чем у любого из остальных участников их команды . (> ALL) Показать еще не сыгранные турниры . (NOTIN) Найти игроков, у которых предварительное количество очков 170 или выше как по Зандербирд Лэцнс, так и по Болеро Лэйнс . (EXISTS) Привести список всех игроков в боулинг, у которых текущее среднее количество очков ниже, чем у всех остальных игроков этой же команды . (< ALL) Показать рецепты, содержащие говядину и чеснок . (EXISTS) Вывести на экран дисплея все компоненты рецептов, содержащих морковь . (IN) Привести список всех компонентов, используемых в некотором рецепте, где единицы измерения количества не являются единицами измерения по умолчанию . (о SOME) Привести список компонентов, не используемых еще ни в одном рецепте . (NOT IN) Примеры операторов Ознакомимся теперь с довольно постоянным множеством примеров, все из которых используют один или несколько подзапросов. Они взяты из учебных баз данных и иллюстрируют использование подзапросов либо для формирования столбцов вывода, либо в качестве фильтров. Сюда также включены примеры наборов результатов, которые должны возвра-ндать эти операции. Мы поместили их сразу после графического описания синтаксиса SQL в виде линии. Имя, которое появляется непосредственно над набором результатов, присвоено каждому запросу в учебной базе данных, которую можно найти на сайте издательства Лори . Каждый запрос сохранен в соответствуюндем примере базы данных, во вложенной папке Chapter И . Чтобы загрузить примеры на свой компьютер и проверить их, следуйте указаниям, приведенным в начале книги. Внимание! Все имена столбцов и таблиц, используемые в этих примерах, взяты из учебных структур баз данных, представленных в приложении В. Поскольку многие их этих примеров используют сложные соединения, СУБД может выбрать другой способ решения. Поэтому несколько первых строк, которые показаны здесь, могут не совпадать точно с результатом, полученным вами, но обш,ее количество строк должно быть одинаково. Для упрош,ения процесса этапы преобразования и уточнения для всех примеров объединены. Подзапросы а оыроженийх Бозо донных зокозов но зокупку List vendors and а count of the products they sell to us . (Привести список поставщиков и подсчитать количество товаров, проданных ими нам .) Уточнение: Преобразование/ Select vendor name and also (select the count(*) of products from the product vendors table for this vendor WHERE vendors vendor ID = product vendors vendor ID) from the vendors table (Выбрать имя поставш,ика и (Выбрать count(*) из Поставш,ики товаров , где идентификатор поставш,ика из Поставш,ики = идентификатору поставш,ика) из Поставш,ики ) SELECT VendName, (SELECT COUNT (*) FROM ProductVendors WHERE ProductVendors.VendorlD AS VendProductCount FROM Vendors Vendors Product Count (10 строк) = Vendors.VendorlD)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |