이 질문을 통해 다음과 같이 얻을 수있는 동일한 결과를 얻으려면 몇 가지 대체 방법을 찾아보십시오.MySql : 외부 조인 쿼리 : 가능한 경우에만 다른 테이블의 필드 값으로 필드 값 재정의 일부 대체 더 나은 방법
계정 (사용자), profile_parameters, Account_profile의 세 가지 테이블이 있습니다. 기본적으로 계정 프로필은 기본 시스템 config (profile_parameters)에 정의 된 매개 변수 값을 가져 오지만 사용자는 자신의 기본 설정 (Account_profile이 저장 됨)을 정의하여이 값을 무시할 수 있습니다. 그런 다음이 매개 변수가 기본 시스템 구성보다 우선합니다. 다음은 테이블 구조입니다 :
계정 : Account_id
(PK) 좀 더 열 ....
Profile_parameters : prfl_param_id
(PK), 이 param_desc
, param_default_value
가 (이 시스템의 기본이다 구성 값)
Account_profile : account_id
(FK 계정으로), prfl_param_id
(FK to profile_parameter. param_value (사용자가 정의한 재정의 된 값)
다음 쿼리에서 원하는 결과를 얻을 수 있었지만 확인하려면 하나의 하위 쿼리를 실행하고 다른 하위 쿼리를 가져 오려면 다른 우아한 쿼리를 사용해야합니다. 나는 그다지 편안함을 느끼지 못한다.
SELECT a.account_id,pp.prfl_param_id,
(CASE WHEN EXISTS (SELECT 1 FROM account_profile ap WHERE ap.account_id=a.account_id AND ap.prfl_param_id=pp.prfl_param_id)
THEN (SELECT param_value FROM account_profile ap WHERE ap.account_id=a.account_id AND ap.prfl_param_id=pp.prfl_param_id)
ELSE pp.default_value END) dfd
FROM account a, profile_parameters pp
어떤 제안 ????
이가 (사용자) 계정하는 것은 정의에만 매개 변수를 반환합니다. 사용자가 값을 정의하지 않으면 기본 시스템 구성 값이 반환되지 않습니다. 또한, 어떤 가치도 전혀 정의하지 않은 다른 모든 계정 (사용자)에 대한 기본 시스템 값을 제공하지 않습니다. – FaisalKhan
샘플 데이터와 문제의 예상 출력을 제공하는 것이 더 분명합니다. –
방금 질문을 편집하고 샘플 데이터를 넣었습니다. 명확 해지기를 바랍니다. – FaisalKhan