powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с запросом
8 сообщений из 8, страница 1 из 1
Помогите разобраться с запросом
    #39660827
Vaspvort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Прошу помощи составить запрос.
Имеется база base на MSSQL 2014
В одной таблице товар, во второй цена и дата установки этой цены. Последняя цена актуальна.
Удалять(менять) в таблицах ничего нельзя.

Таблица t
idtovarid1Хлебid2Молокоid3Яйцаid4Черный хлеб

Таблица p
iddatepriceid12016010120id12016060125id12018010124id22016010231id22016070133id22018020334id22018032535id32016081242id32017123045id42017072122id42018041426id42018061425

Требуется вывести товар с актуальной ценой
Вот так
tovarpriceХлеб24Молоко35Яйца45Черный хлеб25

Сделал такой запрос, но это не то что нужно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
	[tovar]
	,[p].[price]
	,MAX([p].[date])
FROM [base].[t]
JOIN [p] ON [t].[id] = [p].[id]
GROUP BY [tovar], [p].[price]
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39660846
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT t.id,t.tovar,P.price
FROM t
CROSS APPLY (SELECT TOP(1) p.price FROM p WHERE p.id=t.id ORDER BY p.[date] DESC) P;
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39660856
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vaspvort,

STFF - простая задача
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39660884
Vaspvort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

Ваш запрос выдал
idtovarpriceid1Хлеб25
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39660923
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vaspvortiap,

Ваш запрос выдал
idtovarpriceid1Хлеб25Тут два варианта:
1) У вас "кривые" данные, запрос работает корректно
2) Данные в порядке, но вы "криво" адаптировали запрос под свои реалии.

В целом, направление для поиска вам было задано. Пишите свои версии запросов. Если не будет получаться - милости просим с конкретными вопросами... А пока получилось так: "вы что-то не так за меня сделали, я недоволен"
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39661014
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пойди по более длинному пути, дабы понять логику.
Сделай временную таблицу с последней/актуальной ценой на товар.

А потом уже объединяй всё это в один запрос.
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39661560
Vaspvort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,
982183,

Спасибо за ответы. Все от недостатка образования. Таблиц, с которыми нужно работать на много больше чем 2.
С помощью CROSS APPLY я научился работать с 2-мя таблицами. А как с большим количеством?

Как можно заставить работать такой запрос если раскомментировать строки?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT TOP 10000 [_IDRRef]
      ,[_Description]
	 -- ,[_InfoRg8291].[_Fld8296]
	 ,[_AccumRgT9094].[_Fld9092]
  FROM [center].[dbo].[_Reference80]
  --CROSS APPLY (SELECT TOP 1 [_Fld8296]
  --FROM [center].[dbo].[_InfoRg8291]
  --WHERE [_Fld8293RRef] = [_IDRRef]
  --ORDER BY [_Period] DESC
  --) _InfoRg8291;
  CROSS APPLY (SELECT TOP 1 [_Fld9092]
  FROM [center].[dbo].[_AccumRgT9094]
  WHERE [_Period] > '5899-11-01 00:00:00.000'
  AND ([_Fld9087RRef] = 0xBDE9005056C0000811E6DF0F7DA1F0FF OR [_Fld9087RRef] = 0xB76188AE1D8D363D11E5AC8294CADC53)
  AND [_Fld9092] > 0
  AND [_Fld9088RRef] = [_IDRRef]
  ) _AccumRgT9094;
...
Рейтинг: 0 / 0
Помогите разобраться с запросом
    #39661562
Vaspvort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Точку с запятой ; в 10 строчке убрал))) Все Гуд!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]