|
|
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Народ можно ли этот запрос оптимизировать. Смысл такой есть таблица дистребьютеров. Со следующими полями Код дистребьютера, код спонсора (под которым он подписан), LFT,RGT,Фио Таблица `Расход Магазины`: Номер операции, Дата, Код Дистребьютера, код товара, количество Таблица товаров: Код Товара, наименование, цена, баллы. И таблица `Система квалификаций`: Код квалификации, наименование, Объем личных покупок, Объем Лично групповых покупок, Объемная Скидка Где Объем личных покупок – сумма балов по всем покупка совершенных дистребьютером в течение месяца. Объем Лично групповых покупок - сумма балов по всем покупка совершенных дистребьютером и подписанных по ним дистребьютеров в течение месяца. Объемная скидка – скидка Объем Лично групповых покупок в (%) В общем нужно получить такую таблицу. Код дистребьютера, Объем личных покупок, Объем Лично групповых покупок, Код квалификации, Объемная Скидка. Я тут попробовал тут, кое что сделать, вроде бы получилось только при большой базе дистребьютеров слишком долго читает. Народ помогите оптимизировать этот запрос что бы работал по быстрей или посоветуйте другой способ расчета. SELECT Дистребьютеры.`Код Дистребьютера`, (SELECT SUM(`Расход Магазины`.Количество * Товары.Баллы) FROM `Расход Магазины`, Товары WHERE Товары.`Код Товара` = `Расход Магазины`.`Код Товара` AND Дистребьютеры.`Код Дистребьютера` = `Расход Магазины`.`Код Дистребьютера`) AS LO, (SELECT SUM(RM.Количество * TV.Баллы) FROM `Расход Магазины` AS RM, Товары AS TV WHERE TV.`Код Товара` = RM.`Код Товара` AND RM.`Код Дистребьютера` IN (SELECT x.`Код Дистребьютера` FROM Дистребьютеры AS x WHERE x.LFT >= Дистребьютеры.LFT AND x.RGT <= Дистребьютеры.RGT)) AS LGO, `Система квалификаций`.`Код Квалификации`, `Система квалификаций`.`Объемная скидка(в % от ЛГО)` FROM Дистребьютеры, `Система квалификаций` WHERE `Система квалификаций`.`Объемная скидка(в % от ЛГО)` = (SELECT MAX(y.`Объемная скидка(в % от ЛГО)`) FROM `Система квалификаций` AS y WHERE (y.`Личный оборот, очков (минимум)` <= (SELECT SUM(`Расход Магазины`.Количество * Товары.Баллы) FROM `Расход Магазины`, Товары WHERE Товары.`Код Товара` = `Расход Магазины`.`Код Товара` AND Дистребьютеры.`Код Дистребьютера` = `Расход Магазины`.`Код Дистребьютера`) AND y.`Лично-групповой оборот, очков(минимум)` <= (SELECT SUM(RM.Количество * TV.Баллы) FROM `Расход Магазины` AS RM, Товары AS TV WHERE TV.`Код Товара` = RM.`Код Товара` AND RM.`Код Дистребьютера` IN (SELECT x.`Код Дистребьютера` FROM Дистребьютеры AS x WHERE x.LFT >= Дистребьютеры.LFT AND x.RGT <= Дистребьютеры.RGT)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2004, 12:00 |
|
||
|
Помогите с запросом
|
|||
|---|---|---|---|
|
#18+
Вот я тут кое что сдела вот что получилось работает быстрей но нет Код Квалификации Может кто подскажет как сделать по быстрому. SELECT buyr.`Код Дистребьютера`, LO, LGO, MAX(`Система квалификаций`.`Объемная скидка(в % от ЛГО)`) AS `Объемная скидка(в % от ЛГО)` FROM (SELECT Дистребьютеры.`Код Дистребьютера`, (SELECT SUM(`Расход Магазины`.Количество * Товары.Баллы) FROM `Расход Магазины`, Товары WHERE Товары.`Код Товара` = `Расход Магазины`.`Код Товара` AND Дистребьютеры.`Код Дистребьютера` = `Расход Магазины`.`Код Дистребьютера`) AS LO, (SELECT SUM(RM.Количество * TV.Баллы) FROM `Расход Магазины` AS RM, Товары AS TV WHERE TV.`Код Товара` = RM.`Код Товара` AND RM.`Код Дистребьютера` IN (SELECT x.`Код Дистребьютера` FROM Дистребьютеры AS x WHERE x.LFT >= Дистребьютеры.LFT AND x.RGT <= Дистребьютеры.RGT)) AS LGO FROM Дистребьютеры) AS buyr, `Система квалификаций` WHERE `Система квалификаций`.`Личный оборот, очков (минимум)` <= buyr.LO AND `Система квалификаций`.`Лично-групповой оборот, очков(минимум)` <= LGO GROUP BY buyr.`Код Дистребьютера`, LO, LGO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2004, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32495718&tid=1675070]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 432ms |

| 0 / 0 |
