我有3张桌子:
pd_tprofessional
,pd_tpreference
和pd_tprofessional_preference
。
pd_tprofessional
和pd_tpreference
具有唯一的ID(分别为fkprofessional
和fkpreference
)。
pd_tprofessional_preference
具有3列:fkpreference
,patientpreference_selected
,fkprofessional
我想做的是编写一个查询,该查询将获取所有pd_tpreference
,并根据patientpreference_selected
是13还是{{1}返回fkprofessional
为1或0。 },其中存在pd_tprofessional_preference
。
这是我到目前为止得到的:
fkprofessional
此查询通过将外部所有SELECT patientpreference_selected, fkprofessional, pkpreference, preference_name
FROM pd_tprofessional_preference
RIGHT OUTER JOIN pd_tpreference
ON pd_tpreference.pkpreference = pd_tprofessional_preference.fkpreference
与pd_tpreference
联接在一起,从而给了我所有pd_tprofessional_preference
的权限,现在我被困在基于{{1 }},当patientpreference_selected
为13且pd_tprofessional_preference
时。我真的希望这有道理。
答案 0 :(得分:3)
Left Join
。您可以从pd_tpreference
表到pd_tprofessional_preference
表进行左联接。ON
中,指定条件fkprofessional = 13
。Coalesce()
函数来处理pd_tprofessional_preference
表中找不到匹配项的情况。请尝试以下操作:
SELECT
pref_t.fkpreference,
pref_t.preference_name,
map_t.fkprofessional,
COALESCE(map_t.patientpreference_selected, 0) AS patientpreference_selected
FROM pd_tpreference AS pref_t
LEFT JOIN pd_tprofessional_preference AS map_t
ON map_t.fkpreference = pref_t.fkpreference AND
map_t.fkprofessional = 13