아마도 제목이 최고는 아니지만 어쩌면 몇 마디로 설명하는 방법을 모르겠습니다.mysql은 중복 행을 사용하지 않고 왼쪽으로 계속합니다
표 "사용자"
id|name
--+--------+
1 |Alice |
2 |Bob |
3 |Charlie |
표 "article_users"나는 모든 사용자를 확보하고 그들이 가지고 있는지 알 필요가
user_id|article_id|expired_date
-------+----------+------------+
1 | 1 |01-01-2016
1 | 5 |01-01-2018
3 | 1 |01-01-2016
:
이 같은 두 테이블을했습니다 기사 관계, 그 관계가있는 경우 만료되는지 여부를 확인합니다.
어떤 문서가 만료되었는지는 알 필요가 없습니다. 내 말은, 사용자가 (적어도) 하나의 기사로 만료되지 않은 관계가있는 경우, 대답은 "그래, 그/그녀는 적극적인 관계가 있습니다"라는 것입니다.
내가 작업 한 쿼리는 다음과 같습니다
SELECT u.*, IF(TIMEDIFF(expired_date,CURDATE())<0,'YES',IF(TIMEDIFF(expired_date,CURDATE())>0,'EXPIRED','NO')) relation
FROM users u
LEFT JOIN article_users au ON au.user_id = u.id
내가 가진 문제는 내가 때문에 왼쪽의 행이 가입 "복제"는군요, 난 그냥 사용자가이 있는지 알고 싶은 것입니다 활발한 관계. 사용자가 하나 이상의 활성 관계를 가지고 있더라도 상관 없습니다. 그/그녀는 적어도 하나 (적극적인 관계)가있는 경우 그 결과는 "예"여야합니다. 그가 활동적인 관계가없는 경우 (그러나 관계가있는 경우), 결과는 "만료"되어야하고 최종적으로 관계가없는 경우 결과는 "아니오"이어야합니다.
그래서, 원하는 결과가 있어야한다 : 나는 GROUP_CONCAT 기능을 얻으려고하지만 난 그것을 얻을 unabled 해요
id|name |relation
--+--------+--------
1|Alice | YES
2|Bob | NO
3|Charlie | EXPIRED
. 그것이 올바른 길인지 아닌지 나는 모른다.
도움이 될 것입니다.
미리 감사드립니다.
그래, 그게 내가 찾고 있던 쿼리입니다. 단순히 완벽합니다. 너무 고마워! – cooper