3 개의 테이블을 만들었습니다. 각 테이블초보자를위한 쿼리 도움말
지금tblRegion{RegionID as Integer, RegionName as varchar(100)},
tblCountries{CountryID as Integer, CountryName as varchar(100), RegionID as varchar(3)},
tblUsrs{UserID as Integer, UserName as varchar(100), PrefRegion as varchar(3), PrefCountries as varchar(100)}
데이터 : 상기 데이터로부터
tblRegion
---------
RegionID RegionName:
1 Asia --
2 Africa --
3 Europe --
4 America
tblCountries
-------------
CountryID CountryName RegionID:
1 China 1 --
2 Malaysia 1 --
3 Singapore 1 --
4 Afganistan 3 --
5 UK 3 --
6 Spain 3 --
7 Libiya 2 --
8 Morocco 2 --
9 US 4 --
10 Canada 4 --
11 Mexico 4
tblUsrs
-------
UsrID UsrName PrefRegion PrefCountries:
1 Mike 2 -1 --
2 John -1 '1,5,9' --
3 Michael -1, '1' --
4 Tango -1 '8,9'
사용자 2와 같은 영역을 통과하는 경우, 모두 1 아이디 & 4가 표시된다.
나는 질의를 작성했지만 몇 가지 문제가있는 것처럼 보입니다.
Select *
from tblUsers
where (PrefRegion = '2') or ('2' in (
Select RegionID
from tblCountries, tblUsers
where convert(varchar,tblCountries.CountryID) in (tblUsers.PrefCountries)
)
)
이것이 작동하지 않습니다. – Learner
작동하지 않는 기능에 대해 좀 더 자세히 설명해 주시겠습니까? SQL erorr 또는 잘못된 결과 집합. – dbrin
데이터에서 보면 PrefRegion은 사용자 1과 사용자 4의 PrefRegion = -1이지만 국가 번호 8의 PrefCountries는 다시 지역 2에 속합니다. – Learner