parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Mizter Egoist 15.04.2016 11:32 / 15.04.2016 11:44

Пробую запросами к базе, а именно GROUP_CONCAT.
Ниже представляю запрос.
$tree[^table::sql{
	SELECT t.dsc, h.anc AS pID, GROUP_CONCAT(p.url ORDER BY p.eID SEPARATOR '/') AS path, p.name
	FROM path t
	^rem{Меняю p.eID = t.anc на p.eID = t.dsc и получаю правильный p.name, но теряю правильный результат url}
	JOIN pages p ON (p.eID = t.anc)
	JOIN path h ON (h.dsc = t.dsc AND h.lvl = 1)
	^rem{Убираю WHERE t.dsc != t.anc и получаю в path все адреса в правильном порядке}
	WHERE t.dsc != t.anc
	GROUP BY t.dsc
}]
Вопрос в следующем, что у меня в запросе не так?
Проблема в том, что запрос приведенный выше работает, но не корректно.
Если оставить запрос как есть, без учета комментариев к нему:
"path":"1","name":"1"
"path":"1/2","name":"1"
"path":"1/2/3","name":"2"
"path":"1/2/2/4","name":"2"

Если убрать WHERE t.dsc != t.anc, то получиться:
"path":"1","name":"1"
"path":"1/2","name":"1"
"path":"1/2/3","name":"1"
"path":"1/2/3/4","name":"1"
"path":"1/2/3/4/5","name":"1"

Если менять p.eID = t.anc на p.eID = t.dsc, результат будет:
"path":"1","name":"1"
"path":"2/2","name":"2"
"path":"3/3/3","name":"3"
"path":"4/4/4/4","name":"4"
"path":"5/5/5/5/5","name":"5"