У меня есть 2 запроса, которые отображают 2 разных значения, но результаты одного запроса неожиданны.MySQL присоединяется к предложению WHERE
Query1:
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 купил что-то в компании А (в группе, так T.from_group = 1) за $ 5 и получил вознаграждение в размере $ 1 и купил еще один продукт за $ 5 от компании B (из группы, так что T.from_group = 0) и снова получите вознаграждение в размере 1 доллара.
Мой ожидаемый результат: 1
Я получаю:
Query1: 1
QUERY2: 2
я мог бы просто использовать запрос 1, но у меня есть проблемы с другими вещами когда я использую это, поэтому мне нужно понять, что происходит на самом деле!
Моя цель - получить сумму суммы вознаграждения из базы данных. Сумма должна быть разной группы компаний. То есть, если у нас есть 5 разных сгруппированных компаний, и пользователь использует свой moneycard в этих 5 компаниях, я должен получить 5 разных итогов. Если он использовал свою карточку в любой компании, которая не входит в группу, то сумма не должна включать транзакцию от этой негруппированной компании. У меня есть код C++ для подачи базы данных по мере совершения транзакций. В моей таблице fem_transactions есть company_id, amount_reward_user, fem_user_login_id, from_group (это решает, был ли пользователь выполнен из группы или из группы), разрешено и т. Д.
Я хочу отфильтровать сумму, потраченную пользователем 193 в каждом группы отдельно.
Теперь я понял концепции JOINTS, но мне нужно знать, почему t.from_group по второму запросу игнорируется?
Вы должны опубликовать некоторые выборочные данные и выходные данные, демонстрирующие проблемы, наряду с что вы ожидаете от вывода. Измените свой вопрос и добавьте эту информацию. –
Я не знаю, будет ли это исправлять вашу проблему, но вам нужно лучше понять левые соединения и предложения. это один из SQL Server, но принцип saame может быть применим ко всем базам данных: http://wiki.lessthandot.com/index.php/WHERE_conditions_on_a_LEFT_JOIN – HLGEM
Вы должны отредактировать исходный пост, а не опубликовать ответ. Кроме того, нам нужно увидеть схему таблиц. Я не уверен, как группировка вписывается в группу компании. – Thomas