2012-08-15 3 views
1

여러 개의 조인이있는 쿼리가 있습니다. 내 쿼리는 총 단계를 기준으로 리더 보드의 상위 10 명을 반환합니다. 열의 값이 out으로 설정된 모든 행을 제외 시키려고합니다.특정 행 제외

MySQL의 쿼리는 스탠드로 :

SELECT ga.owner_id, u.displayname, g.title, SUM(ga.steps) as `Total Steps`, u.user_id, g.group_id, pri.privacy FROM engine4_passport_goalactivitys ga 
LEFT JOIN engine4_passport_goals goals ON goals.goal_id = ga.owner_id 
LEFT JOIN engine4_passport_passports p ON p.passport_id = goals.owner_id 
LEFT JOIN engine4_users u ON u.user_id = p.owner_id 
LEFT JOIN engine4_passport_teams t ON t.owner_id = u.user_id 
LEFT JOIN engine4_group_groups g ON g.group_id = t.group_id 
LEFT JOIN engine4_passport_privacy pri on pri.user_id = u.user_id 
GROUP BY u.user_id 
ORDER BY `Total Steps` DESC 
LIMIT 0,10 

나는 시도했다 :

SELECT ga.owner_id, u.displayname, g.title, SUM(ga.steps) as `Total Steps`, u.user_id, g.group_id, pri.privacy FROM engine4_passport_goalactivitys ga 
LEFT JOIN engine4_passport_goals goals ON goals.goal_id = ga.owner_id 
LEFT JOIN engine4_passport_passports p ON p.passport_id = goals.owner_id 
LEFT JOIN engine4_users u ON u.user_id = p.owner_id 
LEFT JOIN engine4_passport_teams t ON t.owner_id = u.user_id 
LEFT JOIN engine4_group_groups g ON g.group_id = t.group_id 
LEFT JOIN engine4_passport_privacy pri on pri.user_id = u.user_id 
AND pri.privacy <> 'out' 
GROUP BY u.user_id 
ORDER BY `Total Steps` DESC 
LIMIT 0,10 

위의 두 쿼리의 차이는 라인 : 그러나

AND pri.privacy <> 'out'

, 개인 정보가 'out'으로 설정된 사용자를 제외하는 대신 th 쿼리에서 그들과 그냥 내가 대신 andwhere을 시도 null

에 개인 정보 값을 설정하지만, 그것은 단지 0 행을 반환합니다.

답변

0

대신 WHERE 절을 사용하여 시도하고 해결하고자

where pri.privacy <> 'out' 
+0

. 0 행을 반환합니다. – RSM

0

-이 시도했다

SELECT ga.owner_id, u.displayname, g.title, SUM(ga.steps) as `Total Steps`, u.user_id, g.group_id, pri.privacy FROM engine4_passport_goalactivitys ga 
LEFT JOIN engine4_passport_goals goals ON goals.goal_id = ga.owner_id 
LEFT JOIN engine4_passport_passports p ON p.passport_id = goals.owner_id 
LEFT JOIN engine4_users u ON u.user_id = p.owner_id 
LEFT JOIN engine4_passport_teams t ON t.owner_id = u.user_id 
LEFT JOIN engine4_group_groups g ON g.group_id = t.group_id 
LEFT JOIN engine4_passport_privacy pri on pri.user_id = u.user_id 
WHERE pri.privacy is null OR pri.privacy = 'in' 
GROUP BY u.user_id 
ORDER BY `Total Steps` DESC 
LIMIT 0,10;