Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 22:12

Один и тот же запрос выдаёт разные результаты, если его сделать временной таблицей или вложенным.

Автор Alexey Khromov, 14 авг 2022, 17:04

0 Пользователей и 1 гость просматривают эту тему.

Alexey Khromov

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

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

ВЫБРАТЬ ПЕРВЫЕ 1
      Компьютеры.Модель КАК Модель,
      МАКСИМУМ(Компьютеры.Цена) КАК Цена
   ИЗ
      Справочник.Компьютеры КАК Компьютеры
   
   СГРУППИРОВАТЬ ПО
      Компьютеры.Модель
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ ПЕРВЫЕ 1
      Ноутбуки.Модель,
      МАКСИМУМ(Ноутбуки.Цена)
   ИЗ
      Справочник.Ноутбуки КАК Ноутбуки
   
   СГРУППИРОВАТЬ ПО
      Ноутбуки.Модель
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ ПЕРВЫЕ 1
      Принтеры.Модель,
      МАКСИМУМ(Принтеры.Цена)
   ИЗ
      Справочник.Принтеры КАК Принтеры
   
   СГРУППИРОВАТЬ ПО
      Принтеры.Модель
   
   УПОРЯДОЧИТЬ ПО
      Цена УБЫВ






ВЫБРАТЬ
   ВложенныйЗапрос.Модель,
   ВложенныйЗапрос.Цена
ИЗ
   (ВЫБРАТЬ ПЕРВЫЕ 1
      Компьютеры.Модель КАК Модель,
      МАКСИМУМ(Компьютеры.Цена) КАК Цена
   ИЗ
      Справочник.Компьютеры КАК Компьютеры
   
   СГРУППИРОВАТЬ ПО
      Компьютеры.Модель
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ ПЕРВЫЕ 1
      Ноутбуки.Модель,
      МАКСИМУМ(Ноутбуки.Цена)
   ИЗ
      Справочник.Ноутбуки КАК Ноутбуки
   
   СГРУППИРОВАТЬ ПО
      Ноутбуки.Модель
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ ПЕРВЫЕ 1
      Принтеры.Модель,
      МАКСИМУМ(Принтеры.Цена)
   ИЗ
      Справочник.Принтеры КАК Принтеры
   
   СГРУППИРОВАТЬ ПО
      Принтеры.Модель
   
   УПОРЯДОЧИТЬ ПО
      Цена УБЫВ) КАК ВложенныйЗапрос

LexaK

Alexey Khromov, вы просто неправильно понимаете некоторые команды запроса
Первые 1 - это не нужный вам результат, это просто первая (абы какая) запись, так как у вас не задан порядок сортировки,
поэтому в ваших запросах первая (абы какая запись) получается каждый раз разной!!!
для этого вам и дают такие элементарнейшие задания, что бы вы хоть чуть-чуть, на примере "2 + 2" разобрались в командах запроса
(а еще лучше книжку почитали) изучение запросов методом "тыка" не очень хороший способ,
при построении запроса надо очень четко представлять для чего и как работает каждая команда (и их сочетания)!
тогда и результат будет правильным (и стабильным)! 
если помогло нажмите: Спасибо!

LexaK

Alexey Khromov, выполните и сравните свой запрос с этим, поймите в чем разница и почему именно такая?
какие еще варианты можно построить для получения такого-же результата?

Выбрать * из
(ВЫБРАТЬ ПЕРВЫЕ 1
      Компьютеры.Модель КАК Модель,
      Компьютеры.Цена КАК Цена
   ИЗ
      Справочник.Компьютеры КАК Компьютеры
    УПОРЯДОЧИТЬ ПО
      Цена УБЫВ) таб
   
   ОБЪЕДИНИТЬ ВСЕ
   
Выбрать * из
(ВЫБРАТЬ ПЕРВЫЕ 1
      Ноутбуки.Модель,
      Ноутбуки.Цена
   ИЗ
      Справочник.Ноутбуки КАК Ноутбуки
    УПОРЯДОЧИТЬ ПО
      Цена УБЫВ) таб
   
   ОБЪЕДИНИТЬ ВСЕ
   
Выбрать * из
(ВЫБРАТЬ ПЕРВЫЕ 1
      Принтеры.Модель,
      Принтеры.Цена
   ИЗ
      Справочник.Принтеры КАК Принтеры
    УПОРЯДОЧИТЬ ПО
      Цена УБЫВ) таб
   
    УПОРЯДОЧИТЬ ПО
      Цена УБЫВ

если помогло нажмите: Спасибо!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск