Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция SELECT.docx
Скачиваний:
7
Добавлен:
21.09.2019
Размер:
44 Кб
Скачать
☆

Использование псевдонимов таблиц

В рассмотренных выше примерах связывания таблиц в перечнях возвращаемых столбцов после слова SELECT и в условии поиска после WHERE перед именем столб­ца через точку пишется название таблицы, например:

WHERE POKUPATELI.POKUP = RASHOD.POKUP

Указание имени таблицы перед именем столбца необходимо в том случае, когда в разных таблицах есть одноименные столбцы (как в нашем примере). Использование имен таблиц для идентификации столбцов неудобно из-за своей громоздкости. Намно­го лучше присвоить каждой таблице какое-нибудь краткое имя. Такие имена называ­ются псевдонимами таблиц. Они отделяются пробелом от фактического имени табли­цы в списке таблиц после слова FROM:

SELECT ...

FROM <таблица1 псевдоним1> [, < таблица2 псевдоним2> ...]

WHERE ...

Например, запрос

SELECT RASHOD.*, POKUPATELI.ADRES

FROM RASHOD, POKUPATELI

WHERE POKUPATELI.POKUP = RASHOD.POKUP

после введения в него псевдонимов таблиц выглядит намного компактнее:

SELECT R.*, P.ADRES

FROM RASHOD R, POKUPATELI P

WHERE P.POKUP = R.POKUP

Предложение order by - определение сортировки

Результирующий НД можно отсортировать с помощью предложения

ORDER BY <список_столбцов>

Список столбцов содержит имена столбцов, по которым будет производиться сор­тировка. Если указаны два и более столбцов, первый столбец будет использован для глобальной сортировки, второй столбец - для сортировки внутри группы, определяе­мой единым значением первого столбца, и т. д.

Пример. Показать все записи отпуска товара «Кока-кола», отсортировав их по ка­ждому покупателю:

SELECT POKUP, DAT_RASH, TOVAR, KOLVO

FROM RASHOD

WHERE TOVAR = "Кока-кола"

ORDER BY POKUP

В следующем примере все записи из таблицы RASHOD, сортируются по имени по­купателя

SELECT POKUP, DAT_RASH, TOVAR, KOLVO FROM RASHOD ORDER BY POKUP

Пример. Выбрать все записи из таблицы RASHOD, отсортировав их по именам покупателей, а для каждого покупателя - по дате:

SELECT POKUP, DAT_RASH, TOVAR, KOLVO

FROM RASHOD

ORDER BY POKUP, DAT RASH

Пример. В следующем запросе сортировка осуществляется сначала по имени покупателя, затем по названию товара и, наконец, по дате:

SELECT POKUP, TOVAR, DAT_RASH, KOLVO

FROM RASHOD

ORDER BY POKUP, TOVAR, DAT RASH

Устранение повторяющихся значений

Часто в результирующий НД необходимо включать не все записи с одинаковым значением какого-либо столбца (комбинации столбцов), а только одну из них. В этом случае после SELECT указывают ключевое слово DISTINCT, с помощью которого уст­раняются повторяющиеся записи:

SELECT [DISTINCT|ALL] {*|<значение1>[,<значение2>...]} FROM <таблица1>[,<таблица2>...]

Повторяющимися считаются записи, содержащие идентичные значения во всех столбцах результирующего НД. Наоборот, если в результирующий запрос нужно включить все записи, после SELECT указывают слово ALL. В InterBase/FireBird, как и во мно­гих других серверах, нет необходимости использовать ALL явно, поскольку это значе­ние действует по умолчанию.

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

SELECT DISTINCT TOVAR FROM RASHOD

Следует заметить, что использование DISTINCT может существенно замедлять вы­полнение запросов, т. к. сервер будет тратить дополнительные ресурсы на проверку каждой записи. Обычно DISTINCT применяется в запросах, использующих агрегатные функции.