我有2个数据库表:
Doctors: ID
Doctors_Sub: Doctors.ID, LanguageID, Name
我想根据ID
获取特定医生,并按LanguageID
获取其子数据,但如果LanguageID
不存在,我想获得其他任何内容。
因此,如果Doctor 1只有Lanuage 1的数据。如果我查询Doctor 1 for Language 2,我想返回语言1.
这是我到目前为止的地方:
select dr.id, df.name
from doctors dr
left outer join doctors_defs df ON dr.id = df.doctor_id
where dr.id = drid and (df.lid = lid or lid > 0)
limit 1
这将随机返回任何语言。我希望它首先查看我请求的语言是否存在,否则返回任何其他
由于
答案 0 :(得分:1)
使用doctor_defs
表两次加入,一次使用指定语言获取名称,第二次使用子查询为每位医生选择一个名称。然后使用IFNULL
来选择指定的语言。
SELECT dr.id, IFNULL(df1.name, df2.name) AS name
FROM doctors AS dr
LEFT JOIN doctor_defs AS df1 on dr.id = df1.doctor_id AND df1.languageID = @lid
LEFT JOIN (SELECT doctor_id, MAX(name) AS name
FROM doctor_defs
GROUP BY doctor_id) AS df2 ON dr.id = df2.doctor_id