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 나에게 총 보상 금액을 제공하는 조건은 분명 내가 군에서해야이 쿼리 벗어나 려하고 보상 금액입니다되는 from T.from_group = 1. 그래서 이것은 올바르게 작동하는 것 같습니다.
QUERY2 : T.from_group = 1이 아니라 T.from_group = 0에서의 보상 량을 추가하는 경우에도이 쿼리
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
. 아무도 문제가 뭔지 알고 있습니까? 예를 들어
:
회사 A의 사용자 193 구입 뭔가 (그룹 너무 T.from_group = 1) $ 1의 보상을 얻고 회사 B에서 $ 5 다른 제품을 구입 $ 5과 (교체 아웃 그룹의 T.from_group = 0). $ 1의 보상을 다시 받으십시오.
내 예상 출력은 다음과 같습니다
에 Query1 : 1
QUERY2 : 2
단순히하지만 난 다른 것들에 문제가있는 쿼리 (1)를 사용할 수 내가 점점 오전 1
내가 그것을 사용할 때 나는 정말로 무슨 일이 벌어지고 있는지 이해할 필요가있다 !!
나의 목표는 데이터베이스로부터 얻은 보상 금액의 합계를 얻는 것입니다. 합계는 다른 그룹화 된 회사 여야합니다. 5 개의 그룹화 된 회사가 있고 사용자가 5 개의 회사에서 그의 머니 카드를 사용하고 있다면 5 개의 다른 합계를 얻어야합니다. 그룹에 속하지 않은 회사에서 카드를 사용했다면이 그룹화되지 않은 회사의 거래는 포함되지 않아야합니다. 거래가 발생하면서 데이터베이스에 피드를 제공하는 C++ 코드가 있습니다. 내 fem_transactions 테이블에 company_id, amount_reward_user, fem_user_login_id, from_group이 있습니다 (사용자가 그룹 또는 그룹에서 거래했는지 여부를 결정합니다.)
각 사용자가 소비 한 금액을 필터링하고 싶습니다. 그룹별로
지금 JOINTS 개념을 이해했지만 두 번째 쿼리의 t.from_group이 무시되는 이유를 알아야합니까?
을 당신과 함께 문제를 보여 일부 샘플 데이터와 출력을 게시해야합니다 당신이 기대하는 결과물. 질문을 수정하고이 정보를 추가하십시오. –
나는 당신의 문제를 해결할 수 있는지 알지 못하지만 왼쪽 조인과 where 절을 더 잘 이해해야한다. 이 하나는 SQL Server에만 해당하지만 모든 데이터베이스에는 동일한 원칙이 적용될 수 있습니다. http://wiki.lessthandot.com/index.php/WHERE_conditions_on_a_LEFT_JOIN – HLGEM
응답을 게시하는 대신 원본 게시물을 편집해야합니다. 또한 일부 테이블 스키마를 볼 필요가 있습니다. 그룹화가 회사에 어떻게 적용되는지 나는 잘 모르겠습니다. – Thomas