가능한 중복 : 나는
Users
테이블이
How to select rows where multiple joined table values meet selection criteria?얻기 테이블 행
, 각 사용자에 대한 몇 가지 옵션을 포함하는 Optons
테이블 . 각 사용자는 여러 옵션을 선택할 수 있습니다.
-- this is where user names are stored
create table Users
(
ID int,
UserName varchar(255)
)
-- this table contains options
-- (one flag per row)
create table Options
(
ID NOT NULL AUTO_INCREMENT int,
Flag int,
User_ID int // foreign key
)
내가 설정이 특정 옵션이있는 모든 사용자를 좀하고 싶습니다,하지만 경우 둘 다가 설정되어 테이블처럼 보이게하는 방법
이입니다.
-- find all users with flags 1 and 2 set
select u.UserName from Users u
inner join Options o on o.User_ID = u.ID
where o.Flag in (1, 2)
가 어떻게이 두 항목이 (플래그 1 및 2) Options
테이블에있는 모든 사용자를 반환 할 수 있습니다 :
예를 들어,이 옵션 중 하나가 설정되어있는 사용자를 반환합니다?
한 덕분에, 나는에서 답을 찾았 [이 스레드 (http://stackoverflow.com/q/4047314/1488067) 그동안. – Lou
@Dilbert 환영합니다 : D –
사용자가 o.flag = 2와 o.flag = 1에 대해 두 항목을 갖고있는 경우이 쿼리는 레코드를 잘못 반환합니다. 그래서'COUNT (*)'가 아니라'HAVING COUNT (DISTINCT FLAG) = 2'가 필요합니다. –