parser

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

 

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

У меня немного другая таблица

Mizter Egoist 03.02.2016 10:09 / 03.02.2016 10:42

CREATE TABLE IF NOT EXISTS `path` (
	`anc` INT NOT NULL,
	`dsc` INT NOT NULL,
	`lvl` INT NOT NULL,
	PRIMARY KEY(anc, dsc),
		FOREIGN KEY (anc)
			REFERENCES pages (pID),
		FOREIGN KEY (dsc)
			REFERENCES pages (pID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

INSERT INTO `path` (`anc`, `dsc`, `lvl`)
VALUES
(1, 1, 1),
(1, 2, 2),
(1, 3, 2),
(1, 4, 2),
(2, 5, 3),
(2, 6, 3),
(5, 7, 4),
(3, 8, 3),
(8, 9, 4);
Пытаюсь выводить:
$sections[^get.getPages[$.tID[1]]]
^if($sections){
	^connect[$connect_string]{
		$tPage[^table::sql{
			SELECT
				p.*, 
				h.anc AS parent
			FROM
				pages p
			JOIN
				path h ON p.pID = h.dsc
			LEFT JOIN
				path t ON (h.anc = t.anc AND t.lvl = 1)
			WHERE
				h.anc IN (^sections.menu{$sections.pID}[,])
		}]
	}
	$hPage[^tPage.hash[parent][
		$.type[table]
		$.distinct(true)
	]]
}

^if($sections){<ul class="list">^print[$hPage]($tPage.pID)</ul>}

@print[tree;parent][locals]
$parent(^parent.int(0))
$children[$tree.$parent]
$result[]

^if($children){
	$result[^children.menu{
		<li>
			<label><input type="checkbox" name="section" value="$children.pID"> $children.name</label>
			^if($children.pID ne $children.parent){
				<ul class="list">^print[$tree]($children.pID)</ul>
			}
		</li>
	}]
}
LEFT JOIN, IFNULL(ancestor_id, 0) AS ancestor_id меня заинтересовал, почитал, попробовал, не получилось, как правильно формировать запрос?

Код выводит первого корневого родителя и всех его детей, при этом на выводе корневой родитель и его потомок в один столбик, а потом уже начинается вложенность.

Второго и последующих корневых родителей не выводит.
<ul class="list">
	<li><label><input type="checkbox" name="section" value="97"> Root Parent</label></li>
	<li><label><input type="checkbox" name="section" value="117"> Child</label>
		<ul class="list">
			<li><label><input type="checkbox" name="section" value="127"> Child 2</label>
				<ul class="list">
					<li><label><input type="checkbox" name="section" value="137"> Child 3</label>
						<ul class="list">
							<li><label><input type="checkbox" name="section" value="147"> Child 5</label>
								<ul class="list"></ul>
							</li>
						</ul>
					</li>
					<li><label><input type="checkbox" name="section" value="147"> Child 4</label>
						<ul class="list"></ul>
					</li>
				</ul>
			</li>
		</ul>
	</li>
</ul>