Lord Max
Guest
Help! Не могу составить из 3х сложных запросов 1
Задача: необходимо выбрать сумму всех значений определённого типа (пока всего 2), но выбрать нужно из разных таблиц, реально у меня работает только вариант с 3мя запросами, так как во всех таблицах я выбираю по разным критериям… совсем замучался, при такой выборке как показано ниже, я могу лишь циклом потом пробежать да просуммировать, но вариант не катит, поскольку слишком уж громоздкий для такой элементарной процедуры, уверен, что существуют другие варианты решения проблемы.
Пытался сделать 1м селектом, но выбираются только значения с одинаковыми stats_id, может быть UNION может помочь или что можно подправить здесь?
Есть 3 селекта:
--------#1
SELECT stats_id AS SID,stats_value AS IB
FROM users_stats
WHERE user_id=$id AND stats_id BETWEEN 2 AND 3
ORDER BY SID
--------#2
SELECT ib.stats_id AS SID,SUM(ib.bonus_value) AS IB
FROM i_lib_bonuses AS ib
JOIN slots AS s ON s.user_id=$id
JOIN items AS i ON i.item_id=s.item_id
WHERE ib.lib_id=i.lib_id AND s.item_id IS NOT NULL AND ib.stats_id BETWEEN 2 AND 3
GROUP BY SID
HAVING min(s.slot_id) > 10
ORDER BY SID
--------#3
SELECT iub.stats_id AS SID,SUM(iub.bonus_value) AS IB
FROM items_unique_bonuses AS iub
JOIN slots AS s ON s.user_id=$id
WHERE iub.item_id=s.item_id AND s.item_id IS NOT NULL AND iub.stats_id BETWEEN 2 AND 3
GROUP BY SID
HAVING min(s.slot_id) > 10
ORDER BY SID
Задача: необходимо выбрать сумму всех значений определённого типа (пока всего 2), но выбрать нужно из разных таблиц, реально у меня работает только вариант с 3мя запросами, так как во всех таблицах я выбираю по разным критериям… совсем замучался, при такой выборке как показано ниже, я могу лишь циклом потом пробежать да просуммировать, но вариант не катит, поскольку слишком уж громоздкий для такой элементарной процедуры, уверен, что существуют другие варианты решения проблемы.
Пытался сделать 1м селектом, но выбираются только значения с одинаковыми stats_id, может быть UNION может помочь или что можно подправить здесь?
Есть 3 селекта:
--------#1
SELECT stats_id AS SID,stats_value AS IB
FROM users_stats
WHERE user_id=$id AND stats_id BETWEEN 2 AND 3
ORDER BY SID
--------#2
SELECT ib.stats_id AS SID,SUM(ib.bonus_value) AS IB
FROM i_lib_bonuses AS ib
JOIN slots AS s ON s.user_id=$id
JOIN items AS i ON i.item_id=s.item_id
WHERE ib.lib_id=i.lib_id AND s.item_id IS NOT NULL AND ib.stats_id BETWEEN 2 AND 3
GROUP BY SID
HAVING min(s.slot_id) > 10
ORDER BY SID
--------#3
SELECT iub.stats_id AS SID,SUM(iub.bonus_value) AS IB
FROM items_unique_bonuses AS iub
JOIN slots AS s ON s.user_id=$id
WHERE iub.item_id=s.item_id AND s.item_id IS NOT NULL AND iub.stats_id BETWEEN 2 AND 3
GROUP BY SID
HAVING min(s.slot_id) > 10
ORDER BY SID