簡體   English   中英

SQL JOIN在一個字段或另一個字段上

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM