Задавайте вопросы, мы ответим
Вы не зашли.
Помогите с решением проблемы
Есть таблица примерно такого содержания
id parent Name Value
---------------------------
1 0 Name1 100
2 1 Name2 null
3 2 Name3 40
4 2 Name4 null
необходимо чтобы информация выводилась в следующем виде
Name Value
--------------
Name1 100
Name2 100
Name3 40
Name4 100
т.е. если Value(значение) не введено, то берется значение вышестоящей (родительской) ветки
Подскажите пожалуйста решение...
Неактивен
Используйте IF и JOIN:
SELECT t1.Name, IF(t1.Value, t1.Value, t2.Value) FROM tbl t1 LEFT JOIN tbl t2 ON t2.id = t1.parent;
Неактивен
Как все просто, когда объяснят. Про использование IF даже мысли не возникало. Спасибо.
Буду всем рекомендовать Ваш форум.
Неактивен
rgbeast написал:
Используйте IF и JOIN:
Код:
SELECT t1.Name, IF(t1.Value, t1.Value, t2.Value) FROM tbl t1 LEFT JOIN tbl t2 ON t2.id = t1.parent;
а есть решение для неопределенного количества уровней... т.е. нет значения - берем у родителя, нет у него - берем у родителя-родителя и тд?
Неактивен
Насколько я понимаю, в один запрос этого сделать нельзя.
Как вариант - сделать в таблице дополнительный столбец, где хранить нужное значение. Сами понимаете, получается некоторое дублирование данных, но зато будет быстрее.
Неактивен