Напишите запрос который запрашивает следующие реквизиты всех заказов клиентов дата номер клиент

Автор уроков и преподаватель школы: Владимир Милькин

Начиная с этого урока мы начинаем изучать синтаксис языка запросов.

Я настоятельно вам советую выполнять все запросы у себя на компьютере по ходу чтения уроков и ответственно относиться к выполнению домашних заданий — какими бы простыми они не казались на первый взгляд.

Основы синтаксиса

В двух словах синтаксис языка запросов можно описать так:

ВЫБРАТЬ
СЮДА ПИШЕМ ЧТО БУДЕМ ВЫБИРАТЬ
ИЗ
СЮДА ПИШЕМ ОТКУДА БУДЕМ ВЫБИРАТЬ

Таким образом, если мы хотим написать запрос, который вернёт нам имена всех элементов справочника Еда, то рассуждение будет примерно таким:

  1. У справочника Еда есть реквизит с именем Наименование.
  2. Элементы справочника Еда хранятся в базе данных в таблице Справочник.Еда.
  3. А значит запрос будет таким:
    ВЫБРАТЬ
        Наименование
    ИЗ
        Справочник.Еда

Попробуйте написать этот запрос в консоли запросов, как мы это делали на первом уроке (ссылка):

03

И затем выполнить его (кнопка Выполнить):

04

Мы видим, что в качестве результата запроса вернулась таблица с одним столбцом Наименование, в которой перечислены названия всех элементов справочника Еда. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Таким же образом повторяйте все примеры, которые мы будем разбирать в дальнейшем.

Выборка нескольких свойств

Если мы хотим запросить несколько свойств (к примеру, Наименование и Цвет), то их нужно перечислить через запятую:

ВЫБРАТЬ
    Наименование, 
    Цвет
ИЗ
    Справочник.Еда

05

 Выборка всех свойств

Если мы хотим запросить все свойства объекта и не хотим перечислять каждое из них по имени — воспользуемся символом звёздочка:

ВЫБРАТЬ
    *
ИЗ
    Справочник.Еда

06

Вся результатирующая таблица, которую вернул нам в запрос не поместилась на картинке — столбцов на самом деле больше — по одному на каждый реквизит объекта (включая стандартные).

Выборка первых N строк

Теперь давайте решим такую задачу: «Запросить названия первых 3 элементов справочника Еда«. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Чтобы ограничить количество строк, которое вернёт нам запрос используем ключевое слово ПЕРВЫЕ 3:

ВЫБРАТЬ ПЕРВЫЕ 3
    Наименование
ИЗ
    Справочник.Еда

07

Выборка различных строк

А что если справочник Еда содержал бы два элемента с именем «Банан» и нам требовалось, чтобы запрос возвращал среди прочей еды только один банан, а не два? Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

В этом случае нам пригодилось бы ключевое слово РАЗЛИЧНЫЕ:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Наименование
ИЗ
    Справочник.Еда

08

Дополнительные пояснения

Смотреть пояснения (от 30.07.2014)

Лабораторная работа 1

Установка и подключение базы данных

Для всех занятий будем использовать подготовленную Алексеем Кармановым базу данных «Гастроном».

Обработка «Консоль запросов»

Все запросы будем выполнять в режиме 1С:Предприятия. Для этого нам понадобится предназначенная для этого обработка «Консоль запросов».

Знакомство с базой

Пользователь: Администратор. Пароль пустой.

Наша база уже содержит определенные данные. Вы можете в этом убедиться, если пощёлкаете по объектам базы из меню верхней панели (Еда, Вкусы, Цвета и так далее):

Виды объектов

Еда, Вкусы, Цвета, Клиенты, Заказы клиентов … — всё это прикладные объекты базы данных. Прикладными они называются потому, что служат для решения какой-то прикладной задачи.

Например, объект Еда служит для хранения информации о том, какая бывает еда, а объект Заказы клиентов хранит информацию о заказах, которые были сделаны нашими клиентами.

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

Справочники и Документы.

Справочники

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

Документы

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

Настоящие имена наших объектов

Те имена объектов (Еда, Вкусы, … , Заказ клиента и так далее), которые мы видим в режиме 1С:Предприятия далеко не всегда являются настоящими. Чаще всего они выглядят так, чтобы их приятно было читать пользователю.

Но для написания запросов нам необходимо знать именно настоящее имя объекта. Как его можно выяснить?

К примеру, если бы мы задались целью написать запрос для получения данных по заказам клиентов могли бы мы использовать имя «Заказ клиента», которое отображается в режиме 1С:Предприятия? Конечно же нет, потому что оно не настоящее. Настоящее имя объекта можно узнать в режиме 1С:Конфигуратор.

Зайдите в конфигуратор базы данных и выполните из главного меню «Конфигурация»- «Открыть конфигурацию»:

Вот они наши объекты (и тут, кстати очень хорошо видно кто Справочник, а кто Документ) и их настоящие имена.

Итак, какое настоящее имя у объекта «Заказ клиента»?

Запрос Hello, World

Давайте напишем следующий текст запроса:

ВЫБРАТЬ

*

ИЗ

Справочник.Еда

Запрос очень простой и, в принципе, интуитивно понятный. Попробуйте разобраться в нём самостоятельно

Задание

1)Перечислите полные названия таблиц для всех справочников и документов нашей базы данных.

2)Перечислите полные списки реквизитов для справочников Цвета, Вкусы и Еда и

документов ЗаказКлиента, УстановкаЦенНаЕдуДляКлиентов и ПоступлениеЕды.

3)Перечислите типы столбцов следующих таблиц базы данных Гастроном:

1.Справочник.Еда

2.Документ.ЗаказКлиента

Выборка нескольких свойств

Если мы хотим запросить несколько свойств (к примеру, Наименование и Цвет), то их

нужно перечислить через запятую:

ВЫБРАТЬ Наименование, Цвет

ИЗ

Справочник.Еда

Выборка всех свойств

Если мы хотим запросить все свойства объекта и не хотим перечислять каждое из них по

имени — воспользуемся символом звёздочка:

ВЫБРАТЬ

*

ИЗ

Справочник.Еда

Выборка первых N строк

Теперь давайте решим такую задачу: «Запросить названия первых 3 элементов справочника Еда«. Чтобы ограничить количество строк, которое вернёт нам запрос используем ключевое слово ПЕРВЫЕ 3:

ВЫБРАТЬ ПЕРВЫЕ 3 Наименование

ИЗ

Справочник.Еда

Выборка различных строк

А что если справочник Еда содержал бы два элемента с именем «Банан» и нам требовалось, чтобы запрос возвращал среди прочей еды только один банан, а не два? В этом случае нам пригодилось бы ключевое слово РАЗЛИЧНЫЕ:

ВЫБРАТЬ РАЗЛИЧНЫЕ Наименование

ИЗ

Справочник.Еда

а)Напишите запрос, который запрашивает клиентов и их любимые цвета.

б)Напишите запрос, который запрашивает первые 2 различных вкуса.

в)Напишите запрос, который запрашивает следующие реквизиты всех заказов клиентов:

Дата, Номер, Клиент.

Соседние файлы в предмете Управление данными в учётно-аналитических системах

  • #

    25.11.201844.11 Кб27Консоль запросов для 1С 8.3 и 8.2.epf

  • #
  • #
  • #
  • #
  • #
  • #

0 / 0 / 0

Регистрация: 11.11.2017

Сообщений: 7

1

Запрос, возвращающий список всех клиентов, совершивших заказ за определенный период времени

15.11.2017, 17:51. Показов 41227. Ответов 7


Cформулируйте запрос, возвращающий список всех клиентов (с указанием фамилии и имени), совершивших заказ за определенный период времени
Две таблицы: Customer и Order
Значения в Customer: IdCust — код заказчика, FName — Имя, LName — Фамилия, IdCity — Код города, Adress — Адрес, Zip — Индекс и Phone — Телефон
Значения в Order: IdOrd — Код заказа, IdCust — код заказчика, ordDate — дата



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

15.11.2017, 17:51

Ответы с готовыми решениями:

Запрос, возвращающий список всех клиентов, совершивших более 3 заказов
Добрый день.
Дано:
1-я таблица Commande (id_commande, id_client, date_commande)
2-я таблица…

Нужен запрос, подсчитывающий количество клиентов, ни сделавших ни одного заказа в определенный период времени
Всем привет!
Срочно нужна помощь в составлении sql запроса!
Итак есть 2 таблицы: member( в ней…

SQL запрос, который вернет список клиентов, не совершивших ни одной транзакции
Доброй ночи, уважаемые мастера SQL!
Помогите, пожалуйста, решить задачу (сам на entry level’e и…

Создать запрос, который бы считал сколько сколько процентов набежало за определенный период времени
Добрый день, всем участникам форума.
Не могу справится с задачей.
есть таблица "договора займа…

7

qwertehok

4853 / 3999 / 1005

Регистрация: 29.08.2013

Сообщений: 25,554

Записей в блоге: 3

15.11.2017, 18:56

2

Лучший ответ Сообщение было отмечено alexmafacka как решение

Решение

SQL
1
2
3
4
SELECT c.*
FROM ORDER o
JOIN Customer c ON o.IdCust =c.IdCust 
WHERE o.ordDate BETWEEN '20170101' AND '20171101'

запросвыдаст список ВСЕХ клиентов
если не нужны дубли, то нужно сгруппировать



1



0 / 0 / 0

Регистрация: 11.11.2017

Сообщений: 7

15.11.2017, 19:12

 [ТС]

3

qwertehok, Работает, есть ещё одно условие задачи и надеюсь отстану
Список клиентов, которые за заданный период (например, сентябрь 2010 года) совершили более 3 заказов.
Значения в Customer: IdCust — код заказчика, FName — Имя, LName — Фамилия, IdCity — Код города, Adress — Адрес, Zip — Индекс и Phone — Телефон
Значения в Order: IdOrd — Код заказа, IdCust — код заказчика, ordDate — дата
Значения в OrderItem: IdOrd- Код заказа, IdProd — код продукта или товара, Qty — количество заказов, Price — цена одного заказа



0



qwertehok

4853 / 3999 / 1005

Регистрация: 29.08.2013

Сообщений: 25,554

Записей в блоге: 3

15.11.2017, 19:49

4

третья таблица тут не нужна

SQL
1
2
3
4
5
6
7
8
SELECT * FROM Customer WHERE IdCust IN (
SELECT IdCust FROM ORDER o
JOIN (
SELECT IdOrd, COUNT(IdCust) FROM ORDER WHERE datepart(YEAR,ordDate)='2017' AND datepart(MONTH,ordDate)='9'
GROUP BY IdOrd
HAVING COUNT(IdCust)>3
) t ON o.IdOrd =t.IdOrd 
)

не очень красиво, но работает



1



0 / 0 / 0

Регистрация: 11.11.2017

Сообщений: 7

15.11.2017, 19:56

 [ТС]

5

qwertehok, выдало ошибку: «Сообщение 8155, уровень 16, состояние 2, строка 7
Для столбца 2 таблицы «t» не указано имя.»



0



qwertehok

4853 / 3999 / 1005

Регистрация: 29.08.2013

Сообщений: 25,554

Записей в блоге: 3

16.11.2017, 07:40

6

4я строка
вот это

SQL
1
SELECT IdOrd, COUNT(IdCust)

заменить на

SQL
1
SELECT IdOrd, COUNT(IdCust) AS Количество



1



0 / 0 / 0

Регистрация: 09.12.2018

Сообщений: 3

19.03.2019, 03:45

7

Добрый день.
У меня чем-то похожая ситуация.
Дано:
1-я таблица заказы
2-я таблица клиенты

Таблицы связаны по id_client

Задача вывести клиентов из таблицы клиентов, те которые совершили более 3 заказов в таблице заказов.

Надеюсь доступно написал. Спасибо.



0



solbrain

14 / 11 / 5

Регистрация: 14.03.2019

Сообщений: 43

Записей в блоге: 1

19.03.2019, 10:50

8

Цитата
Сообщение от kipiwpartner
Посмотреть сообщение

Добрый день.
У меня чем-то похожая ситуация.
Дано:
1-я таблица заказы
2-я таблица клиенты
Таблицы связаны по id_client
Задача вывести клиентов из таблицы клиентов, те которые совершили более 3 заказов в таблице заказов.
Надеюсь доступно написал. Спасибо.

T-SQL
1
select * from Клиенты where id_client in (select id_client from Заказы group by id_client having count(*) > 3)



0



                                
Лабораторная работа № 7.

Создание SQL-запросов 
(Structured Query Language).

Цель: Научиться создавать SQL-запросы. 

Задание

1. 
Выдать полную информацию о
товарах.

SELECT *

FROM Товар;

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

Индекс, Город, Адрес,
Название,

SELECT Индекс,
Город, Адрес, Название

FROM клиенты;

3. 
Выдать Наименование всех
товаров.

SELECT DISTINCT
наименование

FROM товар;

4. 
Выдать список клиентов из
Новосибирска.

SELECT название

FROM клиенты

WHERE город=’Н-ск’;

5. 
Составить список товаров,
упорядоченных по полю КодТипа товара, а в пределах одного типа товара по
Наименованию товара.

SELECT *

FROM товар

ORDER BY 2, 3;

6. 
Выдать информацию о заказах, ДатаРазмещения
 которых попадает в последний квартал прошлого года.

SELECT *

FROM заказы

WHERE
ДатаРазмещения>=#10/1/2009# And ДатаРазмещения<=#12/31/2009#;

7. 
Выдать список товаров, КодТовара
которых начинается с 1(или любого другого определенного символа в зависимости
от ваших данных).

SELECT [код товара],
наименование

FROM товар

WHERE [код товара] like
«1*»;

8. 
Определить общее количество
клиентов .

SELECT count(*)

FROM клиенты;

9. 
Выдать общее количество заказов,
сделанных клиентами.

SELECT count(*)

FROM заказы;

10. Выдать количество заказов одного определенного
клиента  (любого клиента, КодКлиента которого есть среди ваших данных).

SELECT count(*)

FROM заказы

WHERE [код клиента]=116;

11. Определить количество заказов, содержащих товар с
заданным кодом.

SELECT count(*)

FROM заказано

WHERE [код товара]=1111;

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

SELECT Avg(Количество) AS
среднее, Min(Количество) AS минимальное, Max(Количество) AS максимальное

FROM Заказы INNER JOIN
Заказано ON Заказы.[Код заказа]=Заказано.[Код заказа]

WHERE [Код клиента]=116;

13. Выдать для каждого товара КодТовара и  общее
заказанное количество этого товара.

SELECT Товар.[Код товара],
Наименование, Sum(Количество) AS Всего

FROM Товар INNER JOIN
Заказано ON Товар.[Код товара]=Заказано.[Код товара]

GROUP BY Товар.[Код
товара], Наименование;

14. Выдать список товаров, заказанных более чем в одном
заказе.

SELECT Заказано.[Код
товара], Товар.Наименование

FROM Заказано INNER JOIN
Товар ON Заказано.[Код товара]=Товар.[Код товара]

GROUP BY Заказано.[Код
товара], Товар.Наименование

HAVING COUNT(*)>1;

15. Дать сведения обо всех клиентах и их заказах (с
помощью команды INNER JOIN).

SELECT Клиенты.[Код
клиента], Название, [Код заказа]

FROM Клиенты INNER JOIN
Заказы ON Клиенты.[Код клиента]=Заказы.[Код клиента];

16. Дать сведения обо всех клиентах и  заказанных ими
товарах

SELECT Название,
Заказы.[Код клиента], Заказы.[Код заказа], Заказано.[Код товара], Наименование

FROM Клиенты, Заказы, Заказано,
Товар

WHERE Клиенты.[Код
клиента]=Заказы.[Код клиента] AND Заказы.[Код заказа]=Заказано.[Код заказа] And
Заказано.[Код товара]=Товар.[Код товара];

17. Выдать список клиентов, заказавших определенный товар
(конкретный КодТовара указать в запросе).

SELECT Название,
Заказы.[Код клиента], Заказы.[Код заказа], Заказано.[Код товара], Наименование

FROM Клиенты, Заказы,
Заказано, Товар

WHERE Клиенты.[Код
клиента]=Заказы.[Код клиента] AND Заказы.[Код заказа]=Заказано.[Код заказа] And
Заказано.[Код товара]=Товар.[Код товара] AND Товар.[Код товара]=1116;

18. Выдать список заказов, содержащих товары заданного
типа.

SELECT Заказано.[Код
заказа]

FROM Заказано, Товар, Типы

WHERE Заказано.[Код
товара]=Товар.[Код товара] AND Товар.[Код типа]=Типы.[Код типа] AND Типы.[Код
типа]=1;

19. Определить КодКлиента, заказавшего по крайней
мере один товар такой же, как заказанный любым другим клиентом ( выберите КодКлиента,
заказавшего товар,  из вашего списка).

SELECT DISTINCT [Код
клиента]

FROM Заказы AS X INNER
JOIN Заказано AS Y ON X.[Код заказа]=Y.[Код заказа]

WHERE Y.[Кодтовара] IN

(SELECT [Кодтовара]

FROM Заказы INNER JOIN
Заказано

ON Заказы.[Код
заказа]=Заказано.[Код заказа]

WHERE Заказы.[Код
клиента]=116);

20. Выдать коды товаров, заказанных более чем одним
клиентом.

SELECT DISTINCT [Код
товара]

FROM Заказано AS X INNER
JOIN Заказы AS Y ON X.[Код заказа]=Y.[Код заказа]

WHERE X.[Кодтовара] IN

(SELECT [Кодтовара]

FROM Заказы INNER JOIN
Заказано

ON Заказы.[Код
заказа]=Заказано.[Код заказа]

WHERE Заказы.[Код
клиента]<>Y.[Код клиента]);

21. Выдать информацию о клиентах, заказавших определенный
товар (использовать коррелированный подзапрос, КодТовара выбрать
произвольно).

SELECT Клиенты.[Код
клиента], Клиенты.Название, Клиенты.Индекс, Клиенты.Город, Клиенты.Адрес

FROM Клиенты INNER JOIN
Заказы ON Клиенты.[Код клиента]=Заказы.[Код клиента]

WHERE 1110 IN

(SELECT Заказано.[Код
товара]

FROM Заказано INNER JOIN
Заказы ON Заказано.[Код заказа]=Заказы.[Код заказа]

where клиенты.[Код
клиента]=заказы.[Код клиента]);

22. Выдать Названия и Адреса  клиентов,
заказавших все возможные виды товаров.

SELECT Название, Адрес

FROM Клиенты

WHERE NOT
EXISTS

(SELECT *

FROM Товар

WHERE NOT
EXISTS

(SELECT *

FROM Заказы, Заказано

WHERE Заказы.[Код
заказа]=Заказано.[Код заказа] AND [Код клиента]=Клиенты.[Код клиента]  AND [Код
товара]=Товар.[Код товара]));

23. Выдать список товаров, цена которых выше заданного
уровня и заказанных определенным клиентом (КодКлиента введите с учетом
ваших данных).

SELECT [Код товара]

FROM Товар

WHERE [На складе] > 750

UNION SELECT [Код товара]

FROM Заказы  INNER JOIN
Заказано

ON Заказы.[Код
заказа]=Заказано.[Код заказа]

WHERE Заказы.[Код
клиента]=116;

24. Добавьте запись о новом клиенте.

INSERT INTO Клиенты

VALUES (120,
«Молодец», 315102, «Бердск», «Южный парк 666»,
«Компания №1»);

25. Удалите сведения об определенном клиенте.

DELETE *

FROM Клиенты

WHERE [Код клиента]=120;

Доброго времени суток, уважаемые читатели. Сегодня мы перейдем к изучению оператора SELECT, который является очень важным в языке SQL. Помимо общей информации, на этот раз будет больше примеров, чем ранее. И в будущем количество примеров будет увеличиваться.

В первом уроке по языку SQL мы создали базу данных и три таблицы, с помощью оператора CREATE, а во втором уроке — для заполнения таблиц данными мы использовали оператор INSERT.

Общие сведения

Итак, оператор SELECT необходим для выборки данных из таблиц. С помощью этого оператора SQL, вы можете выбрать всю таблицу, например сделав такой запрос:

SELECT * FROM имя_таблицы

Соответственно имя таблицы вы укажете свое. Такой запрос вернет все колонки в таблице, и в том порядке, в котором они записаны в базе данных.

Зачастую нужно выбирать определенные данные из таблицы. Это можно сделать большим количеством способов, в зависимости от того, что вы хотите получить. Например если вам необходимо получить только 2 колонки из таблицы, то запрос примет такой вид:

SELECT имя_колонки_1, имя_колонки_2 
FROM имя_таблицы

И в этом примере порядок отображения будет таким, каким его зададут в самом запросе, это значит, что порядок можно контролировать.

Использование условия WHERE

До этого были примеры самых простых запросов, но если вам необходимо выбрать более точечные данные, например строки с определенным значением, то в таком случае можно воспользоваться условием. Это условие задается с помощью ключевого слова WHERE в блоке запроса SELECT SQL, после которого задается само условие.

Разберем небольшой пример на таблице salespeople, созданной ранее, но для начала напомним ее структуру.

snum sname city comm
1 Колованов Москва 10
2 Петров Тверь 25
3 Плотников Москва 22
4 Кучеров Санкт-Петербург 28
5 Малкин Санкт-Петербург 18
6 Шипачев Челябинск 30
7 Мозякин Одинцово 25
8 Проворов Москва 25

Теперь для примера выведем информацию о тех продавцах, которые проживают в Москве. Это сделается таким запросом:

SELECT * FROM salespeople 
WHERE city = 'Москва'

Достаточно простой для понимания запрос, который вернет такой результат:

snum sname city comm
1 Колованов Москва 10
3 Плотников Москва 22
8 Проворов Москва 25

Здесь, отлично видно, что мы выбрали все колонки для отображения. Теперь давайте выведем только имена продавцов, у которых комиссия составляет менее 20%. Следующий запрос сделает это:

SELECT sname, comm FROM salespeople 
WHERE comm < 20

И сразу же результат:

sname comm
Колованов 10
Малкин 18

Обратите внимания, что какие именно колонки выводить, мы задали после слова SELECT. В языке SQL такие запросы — самые распространенные.

SELECT WHERE с несколькими условиями

Очевидно, что пока мы рассмотрели запросы с одиночным условием. Но также в языке SQL, в запросе SELECT возможно использовать несколько условий. Эти условия могут быть объединены с помощью булевых операторов: AND, OR, NOT.

Перейдем сразу к примеру, чтобы лучше понять, выведем информацию о всех продавцах из Москвы или Твери, а также имеющих сумму комиссии равную 25%.

SELECT * FROM salespeople 
WHERE (city = 'Москва' or city = 'Тверь') and comm = 25

Результат такого запроса:

snum sname city comm
2 Петров Тверь 25
8 Проворов Москва 25

Стоит отметить, что правила булевой алгебры здесь работают точно так же, как и всегда. Также важно сказать, что такой запрос можно упростить использовав ключевое слово языка SQL — IN. Тогда запрос SELECT может принять вид:

SELECT * FROM salespeople 
WHERE city IN ('Москва', 'Тверь') and comm = 25

Всегда важно оптимизировать свои запросы.

Ключевое слово DISTINCT

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

SELECT city FROM salespeople

Как мы уже выучили, этот запрос выведет колонку с названием городов. Но в этом запросе есть неточность — данные повторяются и не представляют собой ценности. Для устранения избыточности данных предусмотрели ключевое слово — DISTINCT.

В качестве примера выведем список городов из нашей таблицы:

SELECT DISTINCT city FROM salespeople

Результат:

city
Москва
Тверь
Санкт-Петербург
Челябинск
Одинцово

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

Примеры на SELECT SQL

Теперь, разберем коротко несколько примеров для всех таблиц в нашей базе данных.

1. Напишите команду SELECT, которая бы вывела номер Заказа, сумму, и дату для всех строк из таблицы Заказов.

SELECT onum, amt, odate FROM orders

2. Напишите запрос, который вывел бы все строки из таблицы Заказчиков, для которых номер продавца = 1.

SELECT * FROM customers WHERE snum = 1

3. Напишите команду SELECT, которая вывела бы оценку (rating), сопровождаемую именем каждого заказчика в Москве.

SELECT rating, cname FROM customers WHERE city = 'Москва'

4. Напишите запрос, который может выдать вам все заказы со значениями суммы выше 1000.

SELECT * FROM orders WHERE amt > 1000

5. Напишите запрос, который может выдать вам поля sname и city для всех продавцов в Москве с комиссионными выше 10%.

SELECT sname, city FROM salespeople WHERE comm > 10

6. Напишите запрос к таблице Заказчиков, чей вывод включит всех заказчиков с оценкой =< 100, если они не находятся в Туле.

SELECT * FROM customers 
WHERE rating <= 100 AND
      city != 'Тула'

Заключение

В заключении этой статьи скажем, что мы изучили основные конструкции для оператора SELECT SQL. Также познакомились с ключевыми словами WHERE и DISTINCT, которые часто используются в практике. На этом сегодня все, если у вас возникли вопросы или пожелания, то оставляйте их в комментариях.

Этой статьей мы начинаем цикл, посвященный работе с запросами в системе 1С:Предприятие версии 8.1 и выше.

Оглавление:

  1. Основы работы.
  2. Параметры и операторы сравнения.
  3. Условия отбора.
  4. Группировки.
  5. Итоги.
  6. Вложенные запросы.

Запрос — это мощнейший инструмент, служащий для быстрого (по сравнению со всеми другими способами) получения и обработки данных, содержащихся в различных объектах информационной базы 1С.

Создание запроса

Запрос создается как отдельный объект, который имеет обязательный атрибут Текст, куда собственно и помещается сам запрос. Кроме этого, в запрос могут быть переданы различные параметры, необходимые для его выполнения. После того, как текст и параметры запроса заполнены, запрос необходимо выполнить и поместить результат выполнения в выборку или таблицу значений. Выглядит это все примерно так:

//Создаем запрос
Запрос = новый Запрос;

//Заполняем текст запроса
Запрос.Текст=«Тут пишем текст запроса»;

//Передаем в запрос параметры
Запрос.УстановитьПараметр(«ИмяПараметра», ЗначениеПараметра);

//Выполняем запрос
Результат=Запрос.Выполнить();

//Выгружаем результат запроса в выборку
Выборка=Результат.Выбрать();

//Выгружаем результат запроса в таблицу значений
Таблица=Результат.Выгрузить();

//Последние действия можно объединить
Выборка=Запрос.Выполнить().Выбрать();
//или
Таблица=Запрос.Выполнить().Выгрузить();

Основы языка запросов 1С

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

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

Для получения текста запроса часто бывает удобно пользоваться Конструктором запроса. Он вызывается при щелчке правой кнопкой в любом месте программного модуля.

Например, если необходимо получить значения всех реквизитов справочника Контрагенты, то запрос будет выглядеть так:

Запрос.Текст = «ВЫБРАТЬ
|   *
|ИЗ
|   Справочник.Контрагенты»
;

Если же нужно получить только отдельные реквизиты, то — так:

Запрос.Текст = «ВЫБРАТЬ
|   Код,
|   Наименование,
|   Родитель
|ИЗ
|   Справочник.Контрагенты»
;

Для получения такого текста запроса в Конструкторе запроса нужно выбрать соответствующие поля на вкладке Таблицы и поля.

Конструктор запроса 1С. Выбор реквизитов.Выбираемым в запросе элементам и источникам можно присваивать псевдонимы и использовать их в дальнейшем как в самом запросе, так и при работе с результатом. Кроме того, в запросе могут присутствовать поля с заранее определенным конкретным значением, или с рассчитываемым значением:

Запрос.Текст = «ВЫБРАТЬ
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты»
;

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
НомерКлиента = Выборка.Номер;
ИмяКлиента = Выборка.Имя;
Знач = Выборка.ПолеСоЗначением;
КонецЦикла;

Для задания псевдонимов служит вкладка Объединения/Псевдонимы в Конструкторе запросов.

Конструктор запросов 1С. ПсевдонимыА поле с фиксированным или рассчитываемым значением создается вручную на вкладке Таблицы и поля, в колонке Поля.

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

//Упорядочим клиентов по имени от А до Я и выберем первых 10
Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 10
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты
|УПОРЯДОЧИТЬ ПО
|   Имя»
;

//Выберем самого последнего по алфавиту клиента
Запрос.Текст = «ВЫБРАТЬ ПЕРВЫЕ 1
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты
|УПОРЯДОЧИТЬ ПО
|   Имя УБЫВ»
;

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

//Выборка разрешенных пользователю данных
Запрос.Текст = «ВЫБРАТЬ РАЗРЕШЕННЫЕ
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты»
;

//Выборка неповторяющихся элементов
Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты»
;

Порядок задается на вкладке Порядок в Конструкторе запросов, количество выбираемых элементов, параметры разрешенности и повторяемости — на вкладке Дополнительно.

Конструктор запроса 1С. Параметры выборки

Конструктор запросов 1С. Упорядочивание.Продолжение следует…

«SQL Последнее обновление 25 июня 2019 12:19:39 (UTC / GMT +8 часов)

script1adsense2code

script1adsense3code

SQL SUBQUERY: Упражнение 11 с решением

11. Напишите запрос, чтобы найти имена и номера всех продавцов, у которых было более одного покупателя.

Образец таблицы: клиент

Пример таблицы: продавец

Пример решения:

SELECT salesman_id,name 
FROM salesman a 
WHERE 1 < 
    (SELECT COUNT(*) 
     FROM customer 
     WHERE salesman_id=a.salesman_id);

Вывод запроса:

 имя продавца
5001 Джеймс Хуг
5002 гвоздь вязать

Объяснение:

«SQL

Практика онлайн

«Inventory

Визуализация запроса:

Продолжительность:

«Запрос

Ряды:

«Запрос

Стоимость:

«Запрос

Внесите свой код и комментарии через Disqus.

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

Понравилась статья? Поделить с друзьями:
  • Необходимые реквизиты при постановке на инвентарный учет носителя проставляются на каждом листе
  • Непрерывное свободное от работы время в течение которого за работником сохраняется место работы
  • Нефтегазовая энциклопедия настольная книга для будущих директоров нефтегазовых компаний скачать
  • Ниже приведен ряд источников финансирования бизнеса все они за исключением двух амортизационные
  • Нижегородская сбытовая компания передать показания счетчика за электроэнергию по лицевому счету