2013-08-24 2 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과 함께 사용해야하는 ON의 잘못된 사용법을하고 있습니다. 대신에 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)

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

당신은 아마이 원하는 위치에있을 수 있습니다 그것을 할 수 있음 잘못된 쿼리

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

를 사용하여 조인 된 테이블과 매핑해야합니다 :

SUM(CASE WHEN s.rep_id != 0 AND s.qr_scanned = 1 
     THEN s.rep_sale_commission 
     ELSE 0 END) AS total_rep_commission