2013-08-24 96 views
0

我使用下面的查詢另一個問題......具有MySQL查詢

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

我該如何解決這個問題?

+0

你正在做錯誤的用法,應該和JOIN一起使用,你可以在那裏使用'CASE'。 – Prix

+0

@Prix可以請你提供示例 – seoppc

+0

[**當然這裏有一個很棒的'SELECT'示例**](http://dev.mysql.com/doc/refman/5.0/en/select.html)和[* *用於'CASE'示例**](http://dev.mysql.com/doc/refman/5.5/en/case.html) – Prix

回答

0

您的關鍵字應與連接表映射

所以你用錯誤的查詢

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; 
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