Выберите в таблице MySQL с отношениями самостоятельного соединения
Я не очень знаком с отношениями самосоединения, но я хотел знать, возможно ли, выполнив SELECT, показать продукты по отношению к другим продуктам непосредственно под продуктом, на который есть ссылка, в этой таблице mysql
Пример данных:
Желаемый результат:
Я пробовал несколько запросов, но я получаю только поле со списком, например, связанных продуктов в самой строке:
select p1.idP, p1.name, group_concat(p2.idP)
from prodotti p1
left join prodotti p2 on p1.idP = p2.prodotti_idP
group by p1.idP;
Я хотел бы показать записи, связанные с другими ТОЛЬКО непосредственно под "родительским" продуктом
Спасибо
1 ответ
Вы можете сделать это, не используя "Self Join". Условный ORDER BY
с помощью CASE .. WHEN
выражения будут работать. Если prodotti_idP
является null
, это в основном означает, что это родительский продукт. Таким образом, мы можем просто отсортировать его по idP
значение; в противном случае мы будем использовать его родительский идентификатор (prodotti_idP
сортировать по. Сортировка второго уровня должна быть сделана на idP
значение.
select idP, name, prodotti_idP
from prodotti
order by
case when prodotti_idP is null then idP
else prodotti_idp
end,
idP
Демонстрация SQL Fiddle: http://sqlfiddle.com/