У меня есть следующие таблицы MySQL, где B_ID является внешний ключ, ссылающийся на ID колонке TABLE_B:MySQL SUM различающиеся строки на основе внешнего ключа без подзапроса
---------- -----------
|Table_A | |Table_B |
---------- -----------
|B_ID int| |ID int |
---------- |VALUE int|
-----------
Я хочу, чтобы вычислить сумму VALUE в таблице_B, рассматривая только идентификаторы, которые отображаются в качестве внешних ключей в таблице_A. Кроме того, я хочу добавить каждую строку в Table_B не более одного раза.
Так, если таблицы были заполнены следующими данными:
------ ------------
|B_ID| |ID | VALUE|
------ ------------
|1 | |1 | 50 |
|2 | |2 | 100 |
|2 | |3 | 200 |
------ ------------
сумма будет 150 (вычисляется как 50 + 100).
Запрос Я использую сейчас:
SELECT SUM(b.VALUE)
FROM Table_B b
WHERE b.id IN (SELECT DISTINCT B_ID FROM Table_A)
Однако, я хотел бы избежать подзапрос, если вообще возможно. Любые идеи о том, как это сделать без подзапросов?
Примечание: этот запрос сам является подзапросом в более крупном запросе, поэтому он может выбирать только один столбец.
Спасибо. Это хороший подход, хотя я не могу использовать его в своем реальном сценарии, потому что запрос будет вложен в более крупный запрос, а некоторые дополнительные ограничения на Table_A не будут работать из-за недоступности некоторых полей (в основном, проблема, заявленная здесь http://bugs.mysql.com/bug.php?id=16029) – Epicurus