0
다음은 스키마 설명입니다. 주어진 사용자에 대해 case_users
을 통해 직접 또는 case_groups
테이블을 통해 간접적으로 공유되는 모든 사례를 반환하는 쿼리를 작성하고 싶습니다.SQL 다중 포함 조인
SELECT * FROM `cases`
INNER JOIN `case_users` ON `cases`.`id` = `case_users`.`case_id`
INNER JOIN `case_groups` ON `cases`.`id` = `case_groups`.`case_id`
WHERE `case_users`.`user_id` = '<USER_ID>'
OR `case_groups`.`group_id` IN (<USER_GROUP_LIST>)
EXPLAIN
반환 다음 : 그것은 어떻게 Impossible WHERE noticed after reading const table...
일을 내가 얻을 수있는 여기 내 시도는 내가 그룹을 끌어 경우 사용자는 선행에 속하는입니까? 이상적으로는 사용자가 속한 USER_GROUP_LIST - 그룹을 끌어 오지 않고 단일 샷으로 모든 사례를 검색하고 싶습니다.
mysql> describe users;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
+-------------+--------------+------+-----+---------+----------------+
mysql> describe cases;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
+-------------+--------------+------+-----+---------+----------------+
mysql> describe case_users;
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| user_id | int(11) | NO | PRI | NULL | |
| case_id | int(11) | NO | PRI | NULL | |
+-------------+---------+------+-----+---------+-------+
mysql> describe case_groups;
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| case_id | int(11) | NO | PRI | NULL | |
| group_id | int(11) | NO | PRI | NULL | |
+-------------+---------+------+-----+---------+-------+
mysql> describe group_users;
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| group_id | int(11) | NO | PRI | NULL | |
| user_id | int(11) | NO | PRI | NULL | |
+-------------+---------+------+-----+---------+-------+
아마도 'USER_GROUP_LIST'을 (를) 가져 오는 하위 쿼리를 추가 할 수 있습니까? 나는 그것이 질문의 일부라고 생각한다. (별도의 여행없이 동일한 쿼리에서 목록을 얻는 방법) –
좋은 점, 쿼리가 업데이트되었습니다. – StevieG
사례 사용자와 사례 그룹의 구조는 다르지만 결과에 파일이 포함되어 있습니다. 아마도 당신은 질의를 수정하려고 할 것입니다. – danihp