[英]SQL JOIN on one field or the other
試圖按父親的名字訂購一個家庭,或者,如果沒有父親,那么名字在一個單獨的“人”表中的母親姓名,如:
SELECT DISTINCT family.myid FROM family
JOIN person
ON family.father_id = person.myid OR
family.mother_id = person.myid
ORDER BY person.surname,
person.given_name;
在這個版本中,沒有父親的家庭最終未被排除在底部。 希望沒有父親的家庭以母親的名義出現在命令中。 Sqlite SQL就足夠了。
基本上,你需要為父親和母親單獨加入:
select f.*
from family f left join
person d
on f.father_id = d.myid left join
person m
on f.mother_id = m.myid
order by (case when d.myid is null then m.surname else d.surname end),
(case when d.myid is null then m.given_name else d.given_name end);
因為可能缺少值,所以這應該是left join
。
COALESCE應該工作
ORDER BY COALESCE(NULLIF(b.surname, ''), c.surname),
COALESCE(NULLIF(b.given_name, ''), c.given_name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.