0

次のクエリを使用しています...

SELECT c.idx, c.club_name, s.sale_event_date, s.club_id, COUNT(*) AS total_guests, 
sum(s.qr_scanned = 1) AS total_scanned_guests, 
SUM(s.rep_sale_commission ON (s.rep_id != 0 AND s.qr_scanned = 1)) AS total_rep_commission, 
 SUM(s.sale_commission) AS total_admin_fees
FROM club c RIGHT JOIN
sales s ON s.club_id = c.idx
WHERE c.admin_id = 37
GROUP BY s.sale_event_date
ORDER BY s.sale_event_date DESC;

しかし、MySQLエラーがスローされます-right syntax to use near 'ON (s.rep_id != 0 AND s.qr_scanned = 1)) AS total_rep_commission, SUM(s.' at line 3

どうすればこれを修正できますか?

4

2 に答える 2

0

ON キーワードは、結合されたテーブルにマップする必要があります

したがって、間違ったクエリを使用しています

 ON (s.rep_id != 0 AND s.qr_scanned = 1) 

WHERE条件にある可能性があります (s.rep_id != 0 AND s.qr_scanned = 1)

SELECT 
  c.idx, c.club_name, s.sale_event_date, s.club_id, COUNT(*) AS total_guests, 
  SUM(s.qr_scanned) AS total_scanned_guests, 
  SUM(s.rep_sale_commission) AS total_rep_commission, 
  SUM(s.sale_commission) AS total_admin_fees
FROM 
  club c 
RIGHT JOIN
  sales s 
ON 
  s.club_id = c.idx
WHERE 
  c.admin_id = 37 AND s.rep_id != 0 AND s.qr_scanned = 1 AND s.qr_scanned = 1
GROUP BY
  s.sale_event_date
ORDER BY
  s.sale_event_date DESC;
于 2013-08-24T20:21:35.083 に答える
0

おそらくこれが必要です:

SUM(CASE WHEN s.rep_id != 0 AND s.qr_scanned = 1
         THEN s.rep_sale_commission 
         ELSE 0 END) AS total_rep_commission
于 2013-08-24T20:23:29.517 に答える