![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запросы
dumka © (2008-04-10 16:48:00)Привет всем!
Весь день пытаюсь решить задачу.
Для каждого из товара в таблице склад находит самый дешевый и самый дорогой заменитель, той же самой категории(колонка Kod_tov).Запрос должен выдать столько же записей, сколько их есть в таблице склад. В таком виде:
strih_kod stoim_zac kod_tov max_strih_kod Max_st min_strih_kod Min_st
1 18р 1 2 40р. 24 4р.
2 40р. 1 2 40р. 24 4р.
24 4р. 1 2 40р. 24 4р.
Я сделала так:
SELECT sklad.kod_tov, Min(sklad.stoim_zac) AS [Min-stoim_zac]
FROM sklad
GROUP BY sklad.kod_tov;
SELECT sklad.kod_tov, Max(sklad.stoim_zac) AS Max_st
FROM sklad
GROUP BY sklad.kod_tov;
А за тем
SELECT sklad.strih_kod, sklad.stoim_zac, sklad.kod_tov, min.[Min-stoim_zac], max.Max_st
FROM [min] INNER JOIN ([max] INNER JOIN sklad ON max.kod_tov = sklad.kod_tov) ON min.kod_tov = sklad.kod_tov;
не могу внести max_strih_kod и mix_strih_kod
dumka (2008-04-11 09:36:00) [1]
> Можно еще заняться денормализацией. 8-)
> В таблице категорий хранить эти минимумы и максимумы.
Дело в том, что я не могу менять структуры, это задание как тренинг перед олимпиадой. В прошлом году его никто не решил.
Sergey13 (2008-04-11 08:39:00) [2]> [4] dumka (10.04.08 17:12)
Добавь еще по подзапросу на вытаскивание кодов. Запросы практически аналогичны.
Можно еще заняться денормализацией. 8-)
В таблице категорий хранить эти минимумы и максимумы. К сожалению в аксесе (насколько я знаю) нет тригеров, поэтому придется следить за целостностью данных в клиенте, что не очень хорошо. Но, как вариант можно посмотреть в эту сторону. Кстати, в этом случае запрос сильно упростится и станет намного производительнее. Если таких запросов много - можно получить существенный прирост производительности.
dumka (2008-04-10 17:12:00) [3]
> Sergey13
Твоя версия работает так же как и моя, но внести max_strih_kod и mix_strih_kod не получается
dumka (2008-04-10 17:01:00) [4]strih_kod stoim_zac kod_tov max_strih_kod Max_st min_strih_kod Min_st
1 18р 1 40р. 4р.
2 40р. 1 40р. 4р.
24 4р. 1 40р. 4р.
Вот такая версия уже есть
dumka (2008-04-10 16:58:00) [5]
> СУБД?
Access
Sergey13 (2008-04-10 16:56:00) [6]> [0] dumka (10.04.08 16:48)
СУБД?
можно попробовать примерно так
SELECT sklad.strih_kod, sklad.stoim_zac, sklad.kod_tov, (SELECT Min(sklad.stoim_zac) FROM sklad s2 where s2.kod_tov = sklad.kod_tov),
(SELECT Max(sklad.stoim_zac) FROM sklad s3 where s3.kod_tov = sklad.kod_tov)
FROM sklad