У меня есть 2 запроса, которые отображают 2 разных значения, но результаты одного запроса являются неожиданными.
Запрос1:
SELECT SUM(T.amount_reward_user) AS total_grouping
FROM fem_user_cards UC
LEFT JOIN fem_transactions T USING(card_number)
LEFT JOIN fem_company_login FCL
ON T.fem_company_login_id=FCL.fem_company_login_id
WHERE UC.fem_user_login_id=193
AND FCL.grouping<>0 AND T.from_group=1 AND T.authorised=1
GROUP BY UC.fem_user_login_id
Приведенный выше запрос дает мне общую сумму вознаграждения для пользователя193. Здесь условие - это сумма вознаграждения, которую я получаю по этому запросу, должна быть из группы, что видно из T.from_group = 1.Так что, похоже, это работает правильно.
Query2:
SELECT SUM(T.amount_reward_user) AS total_grouping
FROM fem_transactions T
LEFT JOIN fem_company_login FCL
ON T.fem_company_login_id=FCL.fem_company_login_id
WHERE T.fem_user_login_id=193
AND FCL.grouping<>0 AND T.from_group=1 AND T.authorised=1
В этом запросе, даже если T.from_group = 1, он также суммирует сумму вознаграждения с T.from_group = 0,Кто-нибудь знает, в чем проблема?
Например:
Пользователь 193 купил что-то в компании A (в группе T.from_group = 1) за 5 долларов и получил вознаграждение за1 $ и купил другой продукт за 5 $ у компании B (вне группы, так что T.from_group = 0) и снова получил вознаграждение в 1 $.
Мой ожидаемый результат: 1
Я получаю:
Запрос1: 1
Запрос2: 2
Я мог бы просто использовать запрос 1, но у меня возникают проблемы с другими вещами, когда я его использую, поэтому мне нужно понять, чтона самом деле !!
Моя цель - получить сумму вознаграждений из базы данных.Сумма должна быть разных сгруппированных компаний.То есть, если у нас есть 5 разных сгруппированных компаний, и пользователь использует свою денежную карту в этих 5 компаниях, я должен получить 5 разных итогов.Если он использовал свою карту в какой-либо компании, не входящей в группу, в общую сумму не должна входить транзакция от этой группы.У меня есть код C ++ для подачи базы данных, как транзакции происходят.Моя таблица fem_transactions имеет company_id, amount_reward_user, fem_user_login_id, from_group (это решает, прошел ли пользователь транзакцию из группы или из группы), авторизован и т. Д.
Я хочу отфильтровать сумму, потраченную пользователем 193в каждой группе отдельно.
Теперь я понял концепции JOINTS, но мне нужно знать, почему t.from_group во втором запросе игнорируется?