试图按父亲的名义订购一个家庭,或者,如果没有父亲,则按母亲的名字命名,其名称在一个单独的人物中#34;表,如:
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就足够了。
答案 0 :(得分:3)
基本上,你需要为父亲和母亲单独加入:
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
。
答案 1 :(得分:0)
COALESCE应该工作
ORDER BY COALESCE(NULLIF(b.surname, ''), c.surname),
COALESCE(NULLIF(b.given_name, ''), c.given_name)