SELECT
Инструкция SELECT используется для получения данных из одной или нескольких таблиц. SELECT, который получает данные из нескольких таблиц, называется "объединением". Local SQL поддерживает следующие формы инструкции SELECT:
SELECT [DISTINCT] column_list FROM table_reference [WHERE search_condition] [ORDER BY order_list] [GROUP BY group_list] [HAVING having_condition] [UNION select_expr]
За исключением описанных ограничений и особенностей, все части инструкции интерпретируются так же, как и в стандартном SQL.
column_list указывает столбцы, из которых нужно извлечь данные. Например, следующий запрос извлекает данные из 2 столбцов:
SELECT PART_NO, PART_NAME FROM PARTS
Предложение FROM
Предложение FROM определяет одну таблицу или несколько таблиц, из которых нужно извлечь данные. table_reference может быть одиночной таблицей, списком таблиц (разделенным запятыми), а также внешним или внутренним соединением, определенным в стандарте SQL-92. Например, следующий запрос задает одиночную таблицу:
SELECT PART_NO FROM "PARTS.DBF"
В следующем примере на месте table_reference задается левое внешнее объединение:
SELECT * FROM PARTS LEFT OUTER JOIN INVENTORY ON PARTS.PART_NO = INVENTORY.PART_NO
Предложение WHERE
Необязательное предложение WHERE фильтрует возвращаемые строки, оставляя только те, которые удовлетворяют заданному в search_condition условию. Например, следующий запрос получает только строки, в которых PART_NO больше 543:
SELECT * FROM PARTS WHERE PART_NO > 543
Предложение WHERE может включать предикат IN со списком значений в скобках после него. Например, следующий запрос получает только строки. где номер части совпадает с одним из заданных в списке предиката IN:
SELECT * FROM PARTS WHERE PART_NO IN (543, 544, 546, 547)
В дополнении к скалярным операторам сравнения ( =, <, > ... ), поддерживаются предикаты IN, ANY, ALL, EXISTS.
Предложение ORDER BY
Предложение ORDER BY определяет порядок сортировки полученных строк. Например, следующий запрос получает список всех частей, отсортированный в алфавитном порядке по имени:
SELECT * FROM PARTS ORDER BY PART_NAME ASC
Этот запрос получает всю информацию о частях, отсортированную в порядке убывания номера части:
SELECT * FROM PARTS ORDER BY PART_NO DESC
Сортировка по вычисленным полям может быть задана посредством коррелированного имени или численной позиции. Например, следующий запрос сортирует строки по FULL_NAME - вычисленному полю:
SELECT LAST_NAME || ', ' || FIRST_NAME AS FULL_NAME, PHONE, FROM CUSTOMER ORDER BY FULL_NAME
Предложение GROUP BY
Предложение GROUP BY определяет, как полученные строки группируются для применения агрегатных функций.
Предложение HAVING
Предложение HAVING используется вместе с предложением GROUP BY. Оно позволяет задать условие для группы, соответствующей строке результата запроса. Группы, не удовлетворяющие заданному в HAVING условию, исключаются из результата. Поддерживаются подчиненные запросы.
В дополнении к скалярным операторам сравнения ( =, <, > ... ), поддерживаются предикаты IN, ANY, ALL, EXISTS.
Предложение UNION
Предложение UNION объединяет результаты двух или более предложений SELECT в единую таблицу.
Разнородные объединения
Local SQL поддерживает объединения таблиц в различных форматах; такое объединение называется разнородным.
При осуществлении разнородных объединений, можно выбрать локальную ссылку. Для выбора псевдонима, выберите SQL|Select Alias. Если вы не выбрали псевдоним, Local SQL попытается найти таблицу в текущей папке используемой базы данных. Например, ссылка :WORK: может быть идентификатором базы данных, переданным в функцию.
При указании имени таблицы после выбора локальной ссылки:
- Для локальных таблиц укажите либо путь, либо ссылку.
- Для удаленных таблиц укажите ссылку.
Следующий запрос получает данные из объединения таблицы PARADOX и таблицы dBase:
SELECT DISTINCT C.CUST_NO, C.STATE, O.ORDER_NO FROM "CUSTOMER.DB" C, "ORDER.DBF" O WHERE C.CUST_NO = O.CUST_NO
Также можно использовать ссылки BDE вместе с именами таблиц.