Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запросы


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо