Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблемы с составлением запроса с ипользованием подзапросов / 2 сообщений из 2, страница 1 из 1
05.07.2002, 09:37:09
    #32035283
Проблемы с составлением запроса с ипользованием подзапросов
Я пишу программу торговля в Access 2000 и MS SQL.
Я столкнулся с проблемой.

У меня есть таблица цен из которой по заданной дате я составляю прайс-лист.

CREATE TABLE [Цены на товар] (
[Товар] int,
[Дата] smalldate,
[Цена] smallmoney,
CONSTRAINT pk_Price PRIMARY KEY ([Товар], [Дата])
GO

Мне нужно получить прайс-лист товара на указанную дату.
Когда я использовал только Accsess, все было просто я использовал два запроса:

1)
Запрос [Цены на дату]

select [Товар], max([Дата])
where [Дата] < getdate()
from [Цены на товар]
group by [Товар]

2)
Запрос [Прайс-лист]

select [Цены на товар]. [Товар], [Цены на товар]. [Цена]
where [Цены на товар].[Дата] = [Цены на дату].[Дата] and
[Цены на товар]. [Товар] = [Цены на дату]. [Товар]
from [Цены на товар], [Цены на дату]

и это все работало.

В MS SQL я использовал несколько вариантов для получения прайс-листа, но они либо не работают (1), либо работают не совсем правильно (2).

1)
function [Цены на дату] (@Дата smalldate)
returns table
as
( select [Товар], max([Дата])
where [Дата] < getdate()
from [Цены на товар]
group by [Товар] )
go

В этом варианте функция не возвращает таблицу из-за использования агрегатной функции max.


2)
select [Цены на товар]. [Товар], [Цены на товар]. [Цена]
where [Цены на товар].[Дата] in
( select max([Дата])
where [Дата] < getdate()
from [Цены на товар]
group by [Товар] )
[Цены на дату].[Дата] in
( select [Товар]
where [Дата] < getdate()
from [Цены на товар]
group by [Товар] )
from [Цены на товар]

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

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

Возможно кто-то предложит другой алгоритм или таблицу для хранения цен о товаре.

Заранее благодарю.
...
Рейтинг: 0 / 0
05.07.2002, 09:54:10
    #32035285
Alex Alexeev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с составлением запроса с ипользованием подзапросов
select [Цены на товар].[Товар], [Цены на товар].[Цена]
from [Цены на товар],
(select [Товар], max([Дата]) as [Дата]
from [Цены на товар]
where [Дата] < getdate()
group by [Товар] ) [Цены на дату]
where [Цены на товар].[Товар]=[Цены на дату].[Товар] and
[Цены на товар].[Дата] =[Цены на дату].[Дата]
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблемы с составлением запроса с ипользованием подзапросов / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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