Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
Имеется таблица:
code:
uniqid формаируется из col_1 + col_2 + col_3 дополненые нулями слева до нужной длины.
Допустим имеем данные:
code:
Как можно заметить данные имеют древовидную структуру с 3-мя максимальными вложениями. Нужно создать запрос чтобы выбрать 3-ю запись и имена всех ее родителей:
PHP:
SELECT a.*, b.name AS col_2_name, c.name AS col_1_name
FROM table AS a
LEFT JOIN table AS b ON (b.uniqid = CONCAT(a.col_1, LPAD(a.col_2, 2, 0))
LEFT JOIN table AS c ON (c.uniqid = a.col_1
WHERE a.id=3
Впринципе все хорошо, но при наличии 10 000 записей таблица второе объеденение обходит все 10000 записей, проблема в CONCAT, если явно указать b.uniqid = 'aa04' то прасматривается только одна запись. Почему так происходит и как с этим боротся?
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|