두 개의 PublicSettings 및 PrivateSettings 테이블이 있습니다. PublicSettings는 다른 유형의 사용자에 대한 모든 기본 설정을 가지며 PrivateSettings는 기본 설정과 다른 값을 갖는 사용자 특정 설정 만 유지합니다. 사용자에 대한 모든 설정을 읽으려고하지만 개인 설정에있는 설정이이 테이블에서 가져온 값이 아니라면 공용 테이블에서 값을 가져옵니다.SQL Server : 두 개의 다른 테이블에서 값 선택
select settingname, value from PublicSettings where [email protected]
이 모든 기본 설정을 선택하지만, 예를 들어 설정 "show_captcha_on_login은"나는 대중 모두 얻으려면 기본적으로 사용하지만 같은 settingname 개인 설정에서 단일 사용자도 마찬가지입니다 것을 상상하지만,이 하나 (개인 설정에서 존재하는) 개인 설정에서.
SELECT
pub.name,
CASE WHEN (pub.name = priv.name) THEN priv.value ELSE pub.value END AS value
FROM
PublicSettings pub
LEFT JOIN PrivateSettings priv ON (pub.utype = priv.utype)
WHERE
priv.[uid]=1
선택 유착 (T2.A, T1.A) ... 값이 privatesettings 테이블에 널 (null)이고 다른 하나를 선택하면 – JimmyB
유착이 작동 건 그것은 공개 설정보다 다른 값을 가지지 않으면 privatesettings에 레코드가 존재하지 않는다는 것입니다. –
그 이유는 테이블간에 * outer * join을 사용하는 이유입니다 ... – JimmyB