我正在为我的应用程序运行一个查询,这真的让我希望我使用了ORM。我的表结构如下:获取一对多关系中的所有子记录
标签
- ID
- 名
- 排序
领域
- ID
- 标签
- tabid
正如你可以假定有字段和标签之间的一个一对多的关系。我想要做的是,如果可能,使用纯SQL,创建一个查询,其中包含选项卡,每个选项卡下方显示所有字段的子查询。
目前我只是在做以下工作,但我想知道是否有更好的办法。
<cfquery name="local.tabQuery" attributeCollection="#Variables.dsn#">
SELECT id,name FROM tabs ORDER BY sort
</cfquery>
<cfset local.tabs = [] />
<cfloop query="local.tabQuery">
<cfquery name="local.fields" attributeCollection="#Variables.dsn3">
SELECT * FROM fields WHERE tabid = <cfqueryparam value="#local.tabQuery.id#" cfsqltype="cf_sql_integer" />
<cfquery>
<cfset arrayAppend(local.tabs, local.fields) />
</cfloop>
注:这不是我的实际代码,但应该在理论上,工作得很好。
谢谢邓肯。我以为我可以使用cfouput组,但我错误地使用了它。 – 2011-03-02 16:51:15
如果你有'排序'相同值的记录 - 两个有排序= 3 - 然后CF将它们合并成一个组,这可能不是你想要的。 – bpanulla 2011-03-03 17:51:44