사용자 [V]가 다른 사용자의 프로필 [A]을 방문하여 해당 사용자 [A]를 볼 수있게하는 방법을 알아 보려고합니다. ]도 포함되어 있으며 어느 그룹의 일부 인지도 알 수 있습니다.두 명의 사용자가 여러 쿼리없이 일부 정보를 공유하는지 확인하는 방법
테이블은 다음과 같습니다
SELECT groups.group_name FROM groups JOIN group_users
ON groups.group_id=group_users.group_id WHERE group_users.user_id=2 LIMIT 0,10
어떤 코스의 반환이 :
USERS TABLE
user_id | name | email....
1 | Drent | drents... [V]
2 | Dude2 | [email protected] [A]
3 | Dude3 | [email protected]
GROUPS TABLE
group_id | group_name | joining_policy
1 | The Crazies | invite_only
2 | Team OSM | open
3 | My Group | approval_needed
GOUP_USERS TABLE
group_id | user_id
1 | 1
1 | 2
3 | 2
2 | 1
2 | 3
내가 모든 그룹의 사용자에 대한 일반적인 질의를 할 수있는 [A]의 일부입니다
The Crazies - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>
My Groups - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>
하지만 내가 원하는 것은 [V]가 어떤 그룹을 공유하고 어떤 그룹에 참여할 수 있는지 보여주는 방법입니다.
예를 들어:
난 단지 반환 된 각 행에 대해 하위 쿼리를 사용하여이 일을 생각할 수있는 순간The Crazies - You're already a member
My Groups - <a href="$row['group_id']?join=$my_user_id>Join This Group</a>
하지만 난 다른 조인을 사용하여 할 수있는보다 쉽고 효율적인 방법이있을거야 또는 지금까지 내가 시도한 모든 것은 작동하지 않았다. 같은
뭔가 :
SELECT groups.group_name FROM groups JOIN group_users
ON groups.group_id=group_users.group_id JOIN users AS visitor
ON visitor.user_id=group_users.user_id WHERE group_users.user_id=2 LIMIT 0,10
하지만이 작동하지 않는 것을 알고있을 것이다.
도움을 주시면 감사하겠습니다.
는 당신이 INTERSECT를 시도 (참/거짓) 부울 유형입니까? 그렇게하면 한 사용자 + 병합을 위해 그룹을 선택하는 데 필요한 작업량을 두 배로 늘릴 수 있습니다. –
@ t.dubrownik : 'MySQL'은 'INTERSECT'를 지원하지 않습니다. – Quassnoi