Читаем Самоучитель. Курс SQL. Базы данных. ORACLE полностью

Обрати внимание, что в заголовке этой темы, я во фразе «пустые» значения слово «пустые» взял в кавычки. Это для того, чтобы показать тебе, что хоть при наличии значения NULL в каком-то столбце некоторой записи пусто, NULL обычно трактуется не сколько как пустота, сколько как неопределенность. Вот поэтому при прямом сравнении NULL = NULL будет ответ ложь (false), так как одна неопределенность не может быть равна другой неопределенности, ведь мы не знаем, что скрывается ни под одной из неопределенностей.

<p>Практические задачи №1</p>

1. Написать запрос, выводящий список сотрудников организации, упорядоченный по ФИО.

2. Написать запрос, выводящий список сотрудников организации, упорядоченный по дате рождения. Чтобы сначала вывелись самые молодые сотрудники.

3. Вывести список филиалов.

4. Вывести список блюд столовой, цена которых больше 80 рублей.

5. Вывести список сотрудников, работающих в филиале 1 или 2.

6. Вывести список сотрудников, работающих в первом филиале, родившихся не ранее 01.01.1980.

7. Вывести список сотрудников, фамилия которых начинается на букву «И».

8. Вывести список блюд столовой, цена которых в диапазоне от 70 до 100 рублей. Результат упорядочить по цене, по убыванию.

9. Вывести список блюд столовой, которые готовятся в собственной столовой организации, а не закупаются. У таких строчек указан повар (в столбце CookID присутствует идентификатор повара). Результат отсортировать по наименованию блюда.

Решения практических задач №1 на следующей странице.

<p>Решение практических задач №1</p>

1. Написать запрос, выводящий список сотрудников организации, упорядоченный по ФИО.

2. Написать запрос, выводящий список сотрудников организации, упорядоченный по дате рождения. Чтобы сначала вывелись самые молодые сотрудники.

3. Вывести список филиалов.

4. Вывести список блюд столовой, цена которых больше 80 рублей.

5. Вывести список сотрудников, работающих в филиале 1 или 2.

6. Вывести список сотрудников, работающих в первом филиале, родившихся не ранее 01.01.1980.

7. Вывести список сотрудников, фамилия которых начинается на букву «И».

8. Вывести список блюд столовой, цена которых в диапазоне от 70 до 100 рублей. Результат упорядочить по цене, по убыванию.

9. Вывести список блюд столовой, которые готовятся в собственной столовой организации, а не закупаются. У таких строчек указан повар (в столбце CookID присутствует идентификатор повара). Результат отсортировать по наименованию блюда.

<p>9. Соединения таблиц с помощью JOIN</p><p>9.1. Что такое соединения. Назначение соединений</p>

Почти всегда при выборке из базы данных недостаточно информации одной таблицы. Часто нужно выводящиеся данные одной таблицы дополнять сведениями из другой.

При выполнении запроса SELECT из таблицы продаж, среди прочих, мы получим столбцы «артикул реализованного товара» и «количество». В отчете, для которого мы составляем SQL–запрос, необходимо отображать не только артикул, но еще и название товара и даже единицу измерения. Но что же делать, эти сведения отсутствуют в таблице продаж. Эти данные лежат в совсем другой таблице – в таблице «товары»!

Для того, чтобы в результате выполнения запроса получить больше данных о товаре, (чтобы выводился не только его артикул), но еще и наименование и единица измерения, мы к данным из таблицы «продаж» добавим данные из таблицы «товары». Каждая выводящаяся строчка из таблицы продаж дополнится столбцами из таблицы «товары», того товара, артикул которго указан в выводящейся строчке из таблицы «продаж».

Для того, чтобы к данным, выводящимся из одной таблицы, уметь добавлять информацию из другой, в языке SQL существуют соединения (джоины) таблиц. Рассмотрим типы соединений.

<p>9.2. LEFT JOIN. Левое внешнее соединение</p>

При таком типе соединиения, данные из таблицы, которая указана в SQL–запросе левее (относительно фразы LEFT JOIN) будут выведены все. Запомнить – просто!

К этим данным будут присоединены данные второй таблицы, расположенной в запросе правее. Поясню на примере. Пусть нам нужно вывести сотрудников и их автомобили. Так как цель задачи в первую очередь вывести сотрудников и во втором столбце вывести их автомобили (при их ниличии), то выборка будет именно из таблицы сотрудников. И уже к выводящимся сотрудникам приджоиним их автомобили. Давайте рассмотрим таблицы:

В таблице «Автомобили сотрудников» столбец «ID» – это всего лишь сквозной идентификатор, первичный ключ (номер машины по-порядку). Он нас сейчас не интересует. А вот столбец «ID_PERS» – это внешний ключ, ссылающийся на таблицу «Сотрудники». Он нам сейчас будет нужен. Другими словами, в графе «ID_PERS» указан идентификатор сотрудника, которому принадлежит автомобиль. Согласно нему видно, что BMW X3 и Ford Mondeo принадлежат Петровой Надежде Анатольевне. А у Первого Николая Николаевича, сотрудника с идентификатором 4, нет ниодного автомобиля.

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии