[SQL] 여러 행을 기준으로 테이블에서 MYSQL 선택
SQL여러 행을 기준으로 테이블에서 MYSQL 선택
나는 user_meta라는 테이블이 있습니다. 그 테이블에서 나는 다음과 같은 열이 : ID, 사용자 ID, meta_key, meta_value을
나는 사용자라는 다른 테이블에, 나는 user_meta 테이블 행에 비교하려는 ID가 존재 유일한 중요한 열이.
사용자 테이블 외모가 좋아 :
ID | email | etc...
1 | email@test.com |
5 | testa@a.com |
6 | .... |
7 | .... |
그래서 테이블 (user_meta)가 말하는 그 모습처럼 :
ID | userID | meta_key | meta_value
2 | 1 | companyID | 2
3 | 1 | user_type | staff
4 | 5 | companyID | 2
5 | 5 | user_type | staff
6 | 6 | companyID | 4
7 | 6 | user_type | customer
나는 각 사용자 ID에 대해 하나의 행을 검색하고 싶지만, 회사 ID 및 사용자 유형이 올바른 경우에만.
내가 쿼리를 보낼 것 같은 회사 ID를 가진 모든 사용자를 검색 할, 그래서하자가 $ 회사 ID = 2 및 USER_TYPE = '직원'이 모든 사용자를 말한다.
그래서 user_meta.userID는 users.ID 동일해야하며, user_meta.companyID 2와 동일해야하며, user_meta.user_type은 '직원'와 동일해야합니다.
나는이 기준과 일치하는 모든 사용자의 목록을합니다.
결과는 사용자 ID 1 5가 반환 될 것입니다. 둘 다 회사 ID = 2가, 둘 다 USER_TYPE = 직원이
해결법
-
==============================
1.당신은 당신이 일치하려는 각 속성에 대한 한 번 user_meta에 가입해야합니다.
당신은 당신이 일치하려는 각 속성에 대한 한 번 user_meta에 가입해야합니다.
SELECT u.* FROM users AS u JOIN user_meta AS m1 ON u.id = m1.userID JOIN user_meta AS m2 ON u.id = m2.userID WHERE m1.meta_key = 'companyID' AND m1.meta_value = :companyID AND m2.meta_key = 'user_type' AND m2.meta_value = 'staff'
-
==============================
2.아니 아주 확실 질문에 대해. 나는 이것이 당신이 할 수 있습니다 무엇을 가정하고 있습니다 :
아니 아주 확실 질문에 대해. 나는 이것이 당신이 할 수 있습니다 무엇을 가정하고 있습니다 :
select * from Users where ID in ( select userID from user_meta where (meta_key = 'companyID' and meta_value = 2) or (meta_key = 'user_type' and meta_value = 'staff') );
-
==============================
3.
SELECT `users`.`id`, `Company`.`meta_value`, `UserType`.`meta_value` FROM `users` JOIN `user_meta` `Company` ON `Company`.`userid` = `users`.`id` JOIN `user_meta` `UserType` ON `UserType`.`userid` = `users`.`id` WHERE `UserType`.`meta_value` = 'staff' AND `Company`.`meta_value` = 2
https://gyazo.com/de8d9124418f65b993d708c80c309325
from https://stackoverflow.com/questions/40296781/mysql-select-from-tables-based-on-multiple-rows by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 널 (null) 값 vb.net에 대한 바운드 데이터 테이블을 확인 (0) | 2020.05.29 |
---|---|
[SQL] SQL 서버에서 동적 SQL 피벗 (0) | 2020.05.29 |
[SQL] MS 액세스 제한 (0) | 2020.05.29 |
[SQL] 하위 쿼리 및 반환 절에 PLSQL 삽입 (0) | 2020.05.29 |
[SQL] 액세스 - 두 개의 테이블 및 업데이트를 비교하거나 첫 번째 테이블에 데이터를 삽입 (0) | 2020.05.29 |