У меня есть таблица с именем Resources
, которая может ссылаться на другую запись в той же таблице. Мне было интересно, есть ли способ выполнить запрос как к «родительской» записи, так и к «дочерней» записи с одним и тем же запросом. Я бы предпочел сделать это одним запросом без СОЮЗА. Внуков нет, а ребенок только один, 1: 1.
SELECT Id, Name, OrgId, ClassId
FROM Resources
WHERE OrgId = 1 AND ClassId = 2
OR (if ResourceID is not null, then also return the row where Id = ResourceId)
Я знаю, что могу ПРИСОЕДИНЯТЬСЯ к дочерней записи, но тогда я бы удвоил количество столбцов в наборе результатов, то есть parent.Id, child.id, parent.Name, child.Name.
Может ли кто-нибудь пролить свет?
Редактировать:
Пример данных:
| Id | Name | OrgId | ClassId | ResourceId |
|--------|----------|-----------|-------------|-------------|
| 1 | File | 1 | 2 | 2 |
|--------|----------|-----------|-------------|-------------|
| 2 | Picture | 2 | 1 | NULL |
|--------|----------|-----------|-------------|-------------|
Есть ли запрос, который запускал бы, например, поиск c дайте мне все ресурсы, которые orgId = 1 и ClassId = 2, а затем проверьте, есть ли подключенный ресурс в ResourceId, и верните его.