Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Access. Создание возвращающего запроса


Автор: karryl 7.6.2011, 10:50
Привет всем!. Помогите, пожалуйста создать запрос, возвращающий наименование организации оформившей самый крупный заказ. Нужно, чтобы выдавадо только одно значение. Мучаюсь целый день, но постоянно выдает синтаксические ошибки.
Вот что-то такое получается, но где-то есть ошибка
Код

SELECT TOP 1 *
FROM [SELECT Заказы.КодЗаказа, Sum([Сведения о заказе].[Количество]*[Сведения о заказе].[ЦенаРеализации]) AS Сумма_заказа, Партнеры.[Наименование орг-ции]
FROM Партнеры INNER JOIN (Заказы INNER JOIN [Сведения о заказе] ON Заказы.КодЗаказа = [Сведения о заказе].КодЗаказа) ON Партнеры.КодКлиента = Заказы.КодКлиента
GROUP BY Заказы.КодЗаказа, Партнеры.[Наименование орг-ции]
ORDER BY Sum([Сведения о заказе].[Количество]*[Сведения о заказе].[ЦенаРеализации])

Автор: Akina 7.6.2011, 10:57
ПисАть надо читабельно, а не как курица лапой!

Код

SELECT TOP 1 *
FROM 
[
  SELECT Заказы.КодЗаказа, 
         Sum([Сведения о заказе].[Количество]*[Сведения о заказе].[ЦенаРеализации]) AS Сумма_заказа, 
         Партнеры.[Наименование орг-ции]
  FROM Партнеры 
  INNER JOIN 
  (
    Заказы 
    INNER JOIN 
    [Сведения о заказе] 
    ON Заказы.КодЗаказа = [Сведения о заказе].КодЗаказа
  ) 
  ON Партнеры.КодКлиента = Заказы.КодКлиента
  GROUP BY Заказы.КодЗаказа, Партнеры.[Наименование орг-ции]
  ORDER BY Sum([Сведения о заказе].[Количество]*[Сведения о заказе].[ЦенаРеализации]
)

Так видишь, где накосячено?

Автор: karryl 7.6.2011, 11:02
Сорри, постигалось все за один день, поэтому уж как написано.

Добавлено через 2 минуты и 40 секунд
Если честно, то нет.Может объясните мне, как понимающий в SQL человек

Автор: Akina 7.6.2011, 11:10
1) Если опыта - 1 день, то стройте запросы визуально, мастером. Потом, если надо, открывайте тот же запрос в SQL-виде и изучайте, что мастер построил.
2) Первая открывающая скобка - квадратная, соответствующая ей закрывающая - круглая.
3) Никакого смысла в конструкции select top 1 from (select ...) нету - она эквивалентна select top 1 ..., но работает дольше.
Сухой остаток:
Код

  SELECT TOP 1 
         Заказы.КодЗаказа, 
         Sum([Сведения о заказе].[Количество]*[Сведения о заказе].[ЦенаРеализации]) AS Сумма_заказа, 
         Партнеры.[Наименование орг-ции]
  FROM Партнеры 
  INNER JOIN 
  (
    Заказы 
    INNER JOIN 
    [Сведения о заказе] 
    ON Заказы.КодЗаказа = [Сведения о заказе].КодЗаказа
  ) 
  ON Партнеры.КодКлиента = Заказы.КодКлиента
  GROUP BY Заказы.КодЗаказа, Партнеры.[Наименование орг-ции]
  ORDER BY Sum([Сведения о заказе].[Количество]*[Сведения о заказе].[ЦенаРеализации]

Автор: karryl 7.6.2011, 11:15
Ясно.Спасибо большое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)