按查询顺序使用特定列或按字母顺序排列。 - Coldfuison
我们有一个coldfusion网站,它检索我们的类别,然后按字母顺序显示它们。按查询顺序使用特定列或按字母顺序排列。 - Coldfuison
我们希望能够通过手动排列带有数字的“排序”列的类别,但是如果此数字等于0或空使用字母顺序,则可以强制执行订单。
所以此刻的查询是
<cfquery name="qGetThrdCat" datasource="#request.dsn#">
SELECT *
FROM tbl_prdtthrdcats, tbl_scnd_thrdcat_rel
WHERE tbl_scnd_thrdcat_rel.thrdctgry_ID = tbl_prdtthrdcats.thrdctgry_ID
AND tbl_scnd_thrdcat_rel.scndctgry_ID = #URL.secondary#
AND thrdctgry_archive = 0
ORDER BY thrdctgry_Name ASC
</cfquery>
它的工作原理,如果我尝试
ORDER BY thrdctgry_Sort ASC
,但我不能为我的生命连接起来,主要归功于我缺乏程序员技能。
任何意见将不胜感激。
我可能误解了问题,但你应该能够只是排序上的两列:
ORDER BY thrdctgry_Sort ASC, thrdctgry_Name ASC
这工作完美,谢谢你的帮助! – matthew 2012-08-20 08:10:05
这是您的查询与加盟:
select *
from tbl_prdtthrdcats p
join tbl_scnd_thrdcat_rel s
on p.thrdctgry_ID = s.thrdctgry_ID
where
s.scndctgry_ID = #URL.secondary#
and thrdctgry_archive = 0
对于排序,你可以在你的ORDER子句中使用CASE。
order by
case
when isnull(thrdctgry_Sort, 0) = 0
then thrdctgry_Name
else thrdctgry_Sort
end asc
说实话,我完全无法理解你的排序顺序,但是你可以更多地使用它。
嗨,*,谢谢你的帮助。我有一个404后,我虽然做这些改变,这里是在查询全 -
你的意思是一个HTTP错误404?你可以在你的SQL数据库中检查这个查询吗?你使用的是什么数据库引擎? – Farhan 2012-08-16 19:06:52
感谢*,但我在数据库中尝试了这一点,但没有奏效,这可能是我有限的编程知识! – matthew 2012-08-20 08:09:12
<cfquery name="qGetThrdCat" datasource="#request.dsn#">
SELECT *
FROM tbl_prdtthrdcats, tbl_scnd_thrdcat_rel
WHERE tbl_scnd_thrdcat_rel.thrdctgry_ID = tbl_prdtthrdcats.thrdctgry_ID
AND tbl_scnd_thrdcat_rel.scndctgry_ID = #URL.secondary#
AND thrdctgry_archive = 0
<cfif isNumeric(thrdctgry_Sort) and thrdctgry_Sort GT 0>
ORDER BY thrdctgry_Sort
<cfelse>
ORDER BY thrdctgry_Name ASC
</cfif>
使用SQL是最好的选择,但如果*加齐的解决方案不工作这应该使用你的服务器端代码做的伎俩。
感谢您的建议,但cfif查询只是导致了404错误 – matthew 2012-08-20 08:09:45
所以你想通过'thrdctgry_Sort'进行排序,但如果它是零或null,那么你想按'thrdctgry_Name'进行排序? – Taryn 2012-08-16 15:06:14
恰恰如此,如果我们明确地设置排序顺序,它将遵循一个数字的地方,其他任何东西都将按字母顺序排列。 – matthew 2012-08-16 15:55:46