3つのテーブルを結合しようとしています。
最初の表にはtransactions
、学生が獲得した「ポイント」の詳細が含まれています。ここでの関連フィールドはRecipient_ID
(ポイントを受け取る学生)です。
2番目の表にはpurchases
、学生が購入した「特典」の詳細が含まれています。ここでの関連フィールドはとStudent_ID
ですReward_ID
。
ファイナルテーブルはrewards
、購入した報酬の詳細です。ここでの関連フィールドはReward_ID
、 (関数Cost_to_User
の注文に使用されている各報酬に対して学生が支払う価格)とです。GROUP_CONCAT
Title
私が使用しているクエリは次のとおりです。
SELECT
t.Recipient_ID AS `ID` ,
SUM( t.Points ) AS `Points Earned`,
SUBSTRING_INDEX( GROUP_CONCAT(DISTINCT r.Title ORDER BY r.Cost_to_User DESC SEPARATOR ', '),', ',3 ) AS `Rewards`
FROM `transactions` t
LEFT JOIN `purchases` p
ON t.Recipient_ID = p.Student_ID
LEFT JOIN `rewards` r
ON p.Reward_ID = r.Reward_ID
WHERE t.`Recipient_ID`
IN ( 90128, 90163, 33888, 34240, 137674 )
GROUP BY t.`Recipient_ID`
何らかの理由で、Points Earned
出力が大幅に間違っています。onを削除すると、出力は正しくLEFT JOIN
purchases
Points Earned
なります。
SUM
私のコマンドを狂わせているのは、その参加について何ですか?
編集LEFT JOIN
:購入していない学生を含むすべての学生を表示したいので、コマンドが必要であることに注意してください。詳細については、この投稿をご覧ください。
前もって感謝します、