2
중첩 된 모델을 사용하여 iPhone의 로컬 SQLite 데이터베이스에 대규모 데이터 계층을 저장합니다. 나는 그들의 웹 사이트에서 MySQL tech article을 읽는 방법을 알려주지 만, 그들이 제안한 (그리고 필자가 필요로하는) 쿼리 중 하나는 SQLite와 함께 작동하지 않는 것으로 보이고이를 해결하는 방법을 모르겠습니다.SQLite 쿼리의 하위 쿼리가 작동하지 않습니다.
SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM line_items AS node,
line_items AS parent,
line_items AS sub_parent,
(SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM line_items AS node,
line_items AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'Power Up'
GROUP BY node.name
ORDER BY node.lft
) AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth <= 1
ORDER BY node.lft;
SQLite는이 sub_tree.name
이 열 아니라고보고, 나는 그 하위 쿼리 구현이 불완전하기 때문입니다 가정합니다. 누구든지이 한계를 극복하는 방법에 대한 아이디어가 있습니까?
쿼리의 목적은 주어진 부모 노드의 모든 직계 하위 노드를 가져 오는 것입니다. 서브 쿼리에서 "이름 그대로 node.name"을 사용하여
거의 완전히 수정했습니다. 어떤 이유로 든 수포의 깊이가 1보다 작아서 효과가 없었습니다. sub_tree.depth와 최상위 레벨 사이에서 혼란스러워지고 있다는 것을 알게되었습니다. 방금 최상위 레벨의 이름을 바꿨고 효과가있었습니다. 감사! –