Access SQL. Предложение SELECT. Access select в select


Access SQL. Предложение SELECT - Access

Это статья из цикла статей о языке SQL для Access. В ней описано предложение SELECT и приведены примеры, поясняющие различные методы, используемые при его составлении.

Общие сведения о языке SQL для Access см. в статье Access SQL. Основные понятия, лексика и синтаксис.

В этой статье

Выбор полей: предложение SELECT

Выбор всех полей

Выбор отдельных значений

Использование псевдонимов полей или выражений: ключевое слово AS

Использование выражения при выборе

Выбор полей: предложение SELECT

Инструкция SELECT обычно начинается с предложения SELECT. В предложении SELECT указываются имена полей, которые содержат данные, используемые в запросе. Вместо полей или вместе с ними также можно использовать выражение. В качестве поля можно даже использовать ещё одну инструкцию SELECT — это называется вложенным запросом.

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

SELECT [txtCustomerPhone]

Имя можно заключить в квадратные скобки. Если имя не содержит пробелов или специальных знаков (например, знаков препинания), скобки можно не использовать. Если имя содержит пробелы или специальные знаки, скобки необходимы.

Совет: Имена, содержащие пробелы, проще воспринимать. Такой способ именования поможет сэкономить время при разработке форм и отчетов, но при составлении инструкций SQL придется вводить больше символов. Учитывайте этот факт при присвоении имен объектам в базе данных.

Если инструкция SQL содержит несколько полей с одинаковыми именами, в предложении SELECT к имени каждого поля необходимо добавить имя соответствующего источника данных. В качестве имени источника данных нужно использовать то же имя, что и в предложении FROM.

Выбор всех полей

Чтобы включить в запрос все поля из источника данных, можно указать их все по отдельности в предложении SELECT или использовать подстановочный знак — звездочку (*). Если используется звездочка, при выполнении запроса Access определяет, какие поля содержит источник данных, и включает все эти поля в запрос. Это позволяет обеспечить актуальность запроса в случае добавления в источник данных новых полей.

В инструкции SQL звездочку можно использовать и с несколькими источниками данных. В этом случае вместе с ней необходимо указать имя источника данных, чтобы приложение Access могло определить, из какого источника читать поля.

Предположим, например, что нужно выбрать все поля из таблицы Orders и только адрес электронной почты из таблицы Contacts. Предложение SELECT может выглядеть следующим образом:

SELECT Orders.*, Contacts.[E-mail Address]

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

Выбор отдельных значений

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

SELECT DISTINCT [txtCustomerPhone]

Использование псевдонимов полей или выражений: ключевое слово AS

Чтобы изменить подпись поля в режиме таблицы, в предложении SELECT следует использовать ключевое слово AS и псевдоним поля. Псевдоним поля — это имя, которое назначается полю в запросе, чтобы результаты было удобнее читать. Например, при выборе данных из поля txtCustPhone, которое содержит телефонные номера клиентов, можно улучшить удобочитаемость результатов с помощью псевдонима поля в предложении SELECT следующим образом:

SELECT [txtCustPhone] AS [Customer Phone]

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

Использование выражения при выборе

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

SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]

Это выражение содержит функцию DatePart и два аргумента: : "yyyy" (константа) и [BirthDate] (идентификатор).

В качестве поля можно использовать любое допустимое выражение, если, принимая одно значение, оно возвращает также одно значение.

К началу страницы

support.office.com

sql - Запрос UPDATE с SELECT MAX в ACCESS 2013

У меня есть 2 таблицы ниже в Access 2013

**tbl_GroupInvoices** CustomerName | CountryCode | Group | UsageRate | SelectedTier | ------------ | ----------- | ----- | --------- | ------------ | CUST1 | FR | GROUP1 | | 0 | CUST1 | FR | GROUP2 | 8.40% | 0 | CUST1 | FR | GROUP3 | 47.91% | 0 | CUST1 | FR | GROUP4 | 89.53% | 0 | CUST1 | FR | GROUP5 | 45.34% | 0 | tbl_GenericTiers CustomerName | CountryCode | TierName | UsageRate ------------ | ----------- | -------- | --------- | CUST1 | FR | GROUP1 | 20 | CUST1 | FR | GROUP1 | 40 | CUST1 | FR | GROUP1 | 60 | CUST1 | FR | GROUP1 | 80 | CUST1 | FR | GROUP2 | 20 | CUST1 | FR | GROUP2 | 40 | CUST1 | FR | GROUP2 | 60 | CUST1 | FR | GROUP2 | 80 |

Мне нужно определить выбранный уровень в таблице tbl_GroupInvoices из tbl_GenericTiers, зная, что уровень выбран, если посмотреть на фактическую ставку использования группы в tbl_GroupInvoices и выбрать уровень, который содержит скорость использования.

например, если коэффициент использования = 45,6%, и у меня есть 2 уровня, определенные для группы:

  • 1 при 40%
  • 1 при 60%

Мне нужно выбрать уровень 40%

Если коэффициент использования составляет 64,3%, я выбираю 60% -ный уровень.

Мой SQL-запрос выглядит так:

UPDATE tbl_GroupInvoices SET tbl_GroupInvoices.SelectedTier = TmpTable.MaxUsageRate FROM ( SELECT MAX(tbl_GenericTiers.UsageRate) AS MaxUsageRate FROM tbl_GroupInvoices, tbl_GenericTiers WHERE tbl_GroupInvoices.CustomerName = tbl_GenericTiers.CustomerName AND tbl_GroupInvoices.CountryCode = tbl_GenericTiers.CountryCode AND tbl_GroupInvoices.[Group] = tbl_GenericTiers.TierName AND tbl_GroupInvoices.UsageRate >= tbl_GenericTiers.UsageRate) AS TmpTable

Я продолжаю получать следующее сообщение об ошибке:

Syntax error (missing operator) in query expression 'TmpTable.MaxUsageRate FROM ( SELECT MAX(tbl_GenericTiers.UsageRate) AS MaxUsageRate FROM tbl_GroupInvoices, tbl_GenericTiers WHERE tbl_GroupInvoices.CustomerName = tbl_GenericTiers.CustomerName AND tbl_GroupInvoices.CountryCode = tbl_GenericTiers.CountryCode AND tbl_GroupInvoices.[Group] = tbl_GenericTiers.TierName AND tbl_GroupInvoices.UsageRate >= tbl_GenericTiers.UsageRate) AS TmpTable' источник поделиться

qaru.site

Access SQL: речення SELECT - Access

Це одна із серії статей про Access SQL. У цій статті описано, як написати речення SELECT, а також наведено приклади різних методів, які можна використовувати під час написання цих речень.

Огляд Access SQL див. в статті Access SQL: основні поняття, словник і синтаксис.

У цій статті

Вибір полів: речення SELECT

Вибір усіх полів

Вибір унікальних значень

Використання імен-замінників для полів і виразів: ключове слово AS

Вибір за допомогою виразу

Вибір полів: речення SELECT

Оператор SELECT зазвичай починається з речення SELECT. Речення SELECT використовується для визначення імен полів із даними, які потрібно використати в запиті. Ви також можете використовувати вирази замість полів або на додачу до них. Як поле можна використати навіть ще один оператор SELECT – він називається підзапитом або вкладеним запитом.

Припустімо, вам потрібно дізнатися номери телефонів своїх клієнтів. Якщо поле, у якому зберігаються номери телефонів клієнтів, називається txtCustPhone, речення SELECT матиме такий вигляд:

SELECT [txtCustomerPhone]

Ви можете взяти ім’я у квадратні дужки. Якщо ім’я не містить пробілів і спеціальних символів (наприклад, розділових знаків), квадратні дужки необов’язкові. Якщо ім’я містить пробіли або спеціальні символи, необхідно використовувати дужки.

Порада.: Ім’я, яке містить пробіли, легше читати, і воно може заощадити час під час створення форм і звітів, але може бути так, що вам доведеться вводити більше під час написання SQL-операторів. Слід враховувати це, називаючи об’єкти в базі даних Access.

Якщо SQL-оператор має два або більше полів з однаковим іменем, необхідно додати імена джерел даних усіх полів до поля імені в реченні SELECT. Для джерела даних використовуйте те саме ім’я, яке використовується в реченні FROM.

Вибір усіх полів

Щоб включити всі поля із джерела даних, перерахуйте всі поля окремо в реченні SELECT або скористайтеся символом зірочки (*). Якщо використовується зірочка, програма Access, виконуючи запит, визначає, які поля містить джерело даних, і включає всі ці поля в запит. Таким чином забезпечується постійне оновлення запиту, якщо до джерела даних додаються нові поля.

Ви можете використовувати зірочку з одним або кількома джерелами даних в SQL-операторі. Якщо використовується зірочка та є кілька джерел даних, разом із зірочкою необхідно включити ім’я джерела даних, щоб програма Access могла визначити, з яких джерел даних включати всі поля.

Наприклад, ви хочете вибрати всі поля з таблиці "Замовлення" та лише адресу електронної пошти з таблиці "Контакти". Речення SELECT може мати такий вигляд:

SELECT Orders.*, Contacts.[E-mail Address]

Примітка.: Слідкуйте за тим, коли використовується зірочка. Якщо до джерела даних пізніше додаються нові поля, а ви їх не планували, результати запиту можуть виявитися несподіваними.

Вибір унікальних значень

Якщо ви знаєте, що оператор вибере надлишкові дані, а вам потрібні лише певні значення, ви можете використати в реченні SELECT ключове слово DISTINCT. Припустімо, що кожен із ваших клієнтів представляє кілька різних інтересів, але деякі з них використовують один номер телефону. Якщо ви хочете, щоб кожен номер телефону відображався лише раз, речення SELECT повинне мати такий вигляд:

SELECT DISTINCT [txtCustomerPhone]

Використання імен-замінників для полів і виразів: ключове слово AS

Ви можете змінити підпис будь-якого поля в поданні таблиці, використовуючи ключове слово AS і псевдонім поля в реченні SELECT. Псевдонім поля – це ім’я, яке ви призначаєте полю в запиті, щоб результати було легше читати. Наприклад, якщо ви хочете вибрати дані з поля з іменем txtCustPhone, а поле містить номери телефонів клієнтів, ви можете полегшити читання результатів за допомогою псевдоніма поля в операторі SELECT, як показано нижче:

SELECT [txtCustPhone] AS [Customer Phone]

Примітка.: Коли в реченні SELECT використовується вираз, псевдонім поля обов’язковий.

Вибір за допомогою виразу

Іноді може знадобитися переглянути обчислення на основі даних або отримати лише частину даних поля. Наприклад, ви хочете повернути рік народження клієнтів на основі даних у полі BirthDate у базі даних. Речення SELECT може мати такий вигляд:

SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]

Цей вираз складається з функції DatePart і двох аргументів: "yyyy" (константа) і [BirthDate] (ідентифікатор).

Як поле можна використовувати будь-який припустимий вираз, якщо він виводить одне значення, коли задано одне вхідне значення.

На початок сторінки

support.office.com

access. SELECT . .AS . .

AS удобен для сокращения самого запроса, скажем если много условий, то гораздо быстрее и нагляднее написать SELECT tbl.* FROM sotrudik_table AS tbl WHERE tbl.field1 = 1 AND tbl.field2 = 4 чем SELECT sotrudik_table.* FROM sotrudik_table WHERE sotrudik_table.field1 = 1 AND sotrudik_table.field2 = 4 А еще бывают редкие случаи, когда в запросе несколько раз участвует одна и та же таблица. Тогда без AS не обойтись SELECT a.*, b.* FROM table AS a, table AS b WHERE a.field1 = b.field2

хз, что в access, а в mysql as задает алиасы для таблиц (удобно в больших запросах к нескольким таблицам сразу, чтобы поменьше букв писать)

Именно. Это не только в Access или в MySQL - это стандарт SQL как таковой. Оно везде есть. пример SELECT * FROM cargo as s1, expedition as s2 WHERE s2.cargo_type=s1.cargo_type в данном случае идет неявно описанный INNER JOIN

это значит "как" тоесть в результате выполнения поле уже не будет называтся как название поля в табл. а как в конструкции "AS".

touch.otvet.mail.ru