SQL как ограничить только родителя в OneToOne (с сортировкой по имени) - PullRequest
0 голосов
/ 19 июня 2020

Это возможно? У меня есть отношение OneToOne

id | parent_id |  name | 
-------------------------
 1 |   null    | John |  
 2 |    1      | Agnes |  
 3 |    1      | Lucy |  
 4 |   null    | Bart |  
 5 |    4      | Madlen |

Я хочу ограничить только родителя до 1 и получить результат:

id | parent_id |  name | 
-------------------------
 1 |   null    | John |  
 2 |    1      | Agnes |  
 3 |    1      | Lucy |  

Дополнительная сортировка по имени должна быть сначала по имени родителя, а затем по имени ребенка, например

(DES C)

id | parent_id |  name | 
-------------------------
 1 |   null    | John |  
 3 |    1      | Lucy |
 2 |    1      | Agnes |  
 4 |   null    | Bart |  

(AS C)

id | parent_id |  name | 
-------------------------
 4 |   null    | Bart |  
 1 |   null    | John |  
 2 |    1      | Agnes |  
 3 |    1      | Lucy |

1 Ответ

0 голосов
/ 19 июня 2020

Кажется, вы хотите:

select t.*
from t
where 1 in (id, parent_id)
order by (case when id = 1 then 1 else 2 end), id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...