사용자 그룹을 저장하는 "group_names"테이블이 있습니다. 각 그룹에는 개별 사용자이거나 다른 그룹이 관리 할 수있는 관리자가 있습니다. 현재 group_names.mgr_type에 의해 결정됩니다. INT 값이 1이면 개별 사용자이고 값이 2이면 해당 값을 관리하는 그룹입니다.MySQL에서 SELECT 문을 사용하는 경우
예를 들어 "일반 사용자"그룹은 "IT 부서"그룹 또는 "John Doe"그룹에서 관리 할 수 있습니다. users 및 group_names 테이블의 고유 ID 필드는 "user_id"및 "group_id"입니다.
나는 PHP에서 논리를 제거하고 SQL 쿼리에 넣기를 원하지만 여기서 문제가있다. 이 테이블 레이아웃 주어진 가능한 경우 또는 단순히 설명서를 제공하는 간단한 지침을 따르는 수없는 경우 확실하지 않습니다.
SELECT gn.group_id, gn.group_name, ... gn.mgr_id, CONCAT(usr.user_firstname,' ',usr.user_lastname) AS created_name, usr.user_id,
CASE gn.mgr_type
WHEN '1' THEN CONCAT(usr.user_firstname,' ',usr.user_lastname) WHERE usr.user_id=gn.mgr_id LIMIT 1
WHEN '2' THEN gn.group_name WHERE gn.group_id=gn.mgr_id LIMIT 1
END AS mgr_name
FROM group_names gn
LEFT JOIN users usr
ON gn.created_by=usr.user_id
ORDER BY group_name ASC;
괄호의 유무에 관계없이 IF 및 CASE의 다양한 변형을 시도했지만 "잘못된 구문 오류"오류가 계속 발생합니다.
...for the right syntax to use near 'WHERE usr.user_id=gn.mgr_id LIMIT 1) WHEN '2' THEN (gn.group_name WHERE gn' at line 3
나는 심지어합니다 (mgr_id = GROUP_ID에 따라 다른 행에서 GROUP_NAME을 선택) 같은 테이블에서 다른 행을 선택하거나 내가 다른 테이블을 추가해야합니까? 더 쉽고 효율적인 방법에 대한 제안이 있으십니까?
감사합니다.
빠른 답장을 보내 주셔서 감사합니다.이 솔루션이 가장 효과적이었습니다. – Curtis