이 항목을 만들면 문제를 더 잘 이해하기 위해 SQLFiddle 데모가 생성되었습니다.쿼리가 원하는 결과를 제공하지 않습니다.
먼저, 내가하고 싶은 것을 말하려고합니다. 사람들은 페이스 북을 통해 그룹 페이지를 만들 수 있습니다. 사람들이 내 소셜 네트워킹 프로젝트에서 그룹 페이지를 만들 수있게 만들었습니다. 페이스 북은 권장 그룹 이름으로 메인 페이지에 표시됩니다. 두 개 이상의 다른 제안 된 그룹이 있습니다. 그것이 내가하고 싶은 일입니다. 내 메인 페이지에서 추천 그룹을 보여주고 싶습니다.
사용 가능한 몇 가지 조건이 다음과 같이이 각각 있으며, 거기에 쿼리에서 볼 수 있듯이 그는이 권장 그룹에 설정 한 그룹을 볼 수 없습니다 그룹을 설정
1) 사람 .
2-) 사람은 권장 그룹에서 가입 그룹을 볼 수 없습니다.
권장 그룹에서 추천 그룹을 두 개 제안하고 싶습니다.
쿼리
은 여기에 있습니다 :SELECT
G.group_id,
G.group_owner_id,
G.group_name,
G.group_title,
G.group_cover,
F.group_oid,
F.group_user_id
FROM group_users F
INNER JOIN groups G
ON G.group_id = F.group_oid
WHERE
G.status = '1' AND
F.group_oid <> '10' AND
F.group_user_id <> '10'
GROUP BY
F.group_oid
ORDER BY rand()
LIMIT 2
첫 번째 문제는 다음과 같습니다 사람들은 제안 그룹에서 자신의 그룹을 참조하십시오. I 이 쿼리에서 제안한 자신의 그룹을 표시하고 싶지 않습니다.
두 번째 문제는 사람들이 제안한 그룹의 참여 그룹을 봅니다. 이 검색어에 제안 된 참여 그룹을 표시하고 싶지 않습니다. 다음과 같이
당신은 데모와 함께 첫 번째 문제를 테스트 할 수 있습니다
이수 (10)가 그룹 sapsik을 만든 사람입니다 (16을 GROUP_ID). 이 쿼리에서 10을 사용하기 때문에이 행을 출력에서 비활성화해야합니다. 다음과 같이
F.group_oid <> '10' AND
F.group_user_id <> '10'
또한 당신이 데모와 함께 두 번째 문제를 테스트 할 수 있습니다
numver (8)는 자신의 그룹을 생성하지 않는, 숫자 8 단지에 합류 그룹 16 (table group_users, row group_oid 16 , group_user_id 8
). 그러나 다음과 같은 라인을 변경하면
F.group_oid <> '8' AND
F.group_user_id <> '8'
숫자 8은 여전히 등록 된 그룹을 계속 볼 수 있습니다.