쿼리 # 1은 의도 한대로 작동하지만 "smf_user_points_log.id_school_year"는 매번 "7"이되지 않습니다. 이 값 (7 대신)은 쿼리 # 2의 결과 여야합니다.조건이 다른 SELECT의 결과를 기반으로하는 경우 SELECT
쿼리 # 1 :
SELECT smf_user_points_log.id_member, smf_members.usertitle
FROM smf_user_points_log
INNER JOIN smf_members
ON smf_members.id_member=smf_user_points_log.id_member
WHERE smf_user_points_log.id_school_year = 7 AND smf_user_points_log.points >= 50 AND smf_members.date_registered < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))
쿼리 # 2 :
SELECT id_school_year FROM smf_settings
가 어떻게 같은 결과를 얻기 위해 쿼리 # 1을 다시 작성해야합니까? 여러 가지 조인을 시도했지만 실패했습니다. 당신은 하위 쿼리와 IN
을 사용할 수 있습니다
SELECT smf_user_points_log.id_member, smf_members.usertitle
FROM smf_user_points_log
INNER JOIN smf_members
ON smf_members.id_member=smf_user_points_log.id_member
WHERE smf_user_points_log.id_school_year = (SELECT id_school_year FROM smf_settings) AND smf_user_points_log.points >= 50 AND smf_members.date_registered < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))
하위 쿼리가 여러 행을 반환하는 경우에는 작동하지 않습니다. – Barmar