我有一个名为content的表,我在其中添加顶级页面和子页面。顶级页面将包含parent__id as the id of page title home
,子页面将具有各自的parent__id
。当我添加页面时,它看起来像这样。
id parent__id title and so on.
1 0 Home
2 1 About
3 2 services
4 1 contact us
这里我想显示它像
Home
>About
>>services
>contact
我试过这个
<cfquery name="d" datasource="mydata">
SELECT p.id as parentid,
p.title as parent,
p.nav_depth,
c.id as childid,
c.title as child,
c.parent__id as child_parentid
from content p
left join content as c on c.parent__id = p.id
where p.site__id = "8432381492061036983"
group by p.id, c.id
order by p.id, c.id, c.nav_order
</cfquery>
<cfdump var="#d#">
<cfoutput query="d" group="parentid">
<cfif d.nav_depth EQ 0>
#d.parent#<br />
<cfif d.parentid EQ d.child_parentid>
<cfoutput>> #d.child#<br /></cfoutput>
</cfif>
</cfif>
<cfif d.nav_depth GT 0>
<cfif d.childid EQ d.child_parentid>
<cfoutput> >> #d.child<br /></cfoutput>
</cfif>
</cfif>
</cfoutput>
我得到了这样的输出。当我查看转储时,它显示正确的结果。
Home
> About US
> Services
有什么可以帮助我在查询或cfoutput中做什么,以不同的方式标记孩子的孩子并在父母的正下方显示它? 这是我的完整表格结构,其中包含数据http://sqlfiddle.com/#!2/a29fc/1/0。感谢
答案 0 :(得分:1)
我看不到孩子的来源,但你需要的是嵌套的组输出。这应该让你走上正轨。最值得关注的是,您的查询按照它们应在屏幕上显示的顺序排序。您当前的SQL Fiddle没有正确执行该部分。
<cfoutput query="d" group="parentid">
#d.parent#<br />
<cfoutput group="child"><!--- group based on child --->
> #d.child#<br /><!--- output child header --->
<cfoutput>
>> #d.child<br /><!--- all matching children for current d.child --->
</cfoutput>
</cfoutput>
</cfoutput>
这将输出
Home
> About Us
>> Our Works
> Contact Us