У меня есть членская таблица, которая имеет внешний ключ для различных других таблиц. Я проверяю каждую из этих таблиц, чтобы увидеть, есть ли у участника одна или несколько записей, и если они мне возвращают значение, если нет, я возвращаю 0, все это выбирается как общее. Это в основном работает за исключением одного места. Мне нужно проверить две таблицы, и если в одной из них есть запись, запрос вернет 5,0 в противном случае. Я пытаюсь использовать СУММУ подсчетов с UNION для этого, но я не получаю ожидаемых результатов, похоже, что выбирается только первая запись в каждой из двух таблиц, и это все.
Я использую (после некоторой помощи) серию коррелированных запросов с COUNT () и IF (), чтобы получить итог. Вот как выглядит часть запроса:
SELECT
member_id,
(SELECT IF(COUNT(member_id)>0,10,0) FROM tbl1 WHERE member_id = m.member_id)
+
(SELECT IF(SUM(tbl_count) > 0,5,0) FROM
(
SELECT member_id, COUNT(tbl2.id) as tbl_count
FROM tbl2
UNION ALL
SELECT member_id, COUNT(tbl3.id) as tbl_count
FROM tbl3
) sub WHERE sub.member_id = m.member_id
)
as total
FROM members m
Фактический запрос объединяет еще 10 или около того таблиц, опять же, единственная часть, которая не работает, это СУММА СЧЕТА с UNION. Кто-нибудь может подсказать, как мне это сделать? Любая помощь будет очень высоко ценится. Большое спасибо.