5

カテゴリを取得してアルファベット順に表示する Coldfusion Web サイトがあります。

番号を含む「並べ替え」列を使用してカテゴリを手動で配置することにより、順序を強制できるようにしたいと考えていますが、この番号が 0 または null の場合は、アルファベット順を使用します。

そのため、現時点ではクエリは

<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

しかし、主にプログラマーのスキルが不足しているため、一生それらに参加することはできません。

アドバイスをいただければ幸いです。

4

3 に答える 3

7

私は質問を誤解しているかもしれませんが、両方の列で並べ替えることができるはずです:

ORDER BY thrdctgry_Sort ASC, thrdctgry_Name ASC
于 2012-08-16T15:06:19.060 に答える
2

結合を使用したクエリは次のとおりです。

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

正直なところ、並べ替えの順序が完全には理解できませんでしたが、もっといじってみてください。

于 2012-08-16T15:10:47.980 に答える
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
<cfif isNumeric(thrdctgry_Sort) and thrdctgry_Sort GT 0>
ORDER BY thrdctgry_Sort
<cfelse>
ORDER BY thrdctgry_Name ASC
</cfif>

SQL を使用するのが最良の選択肢ですが、Muhammad Ghazi のソリューションが機能しない場合は、サーバー側のコードを使用してこのトリックを実行する必要があります。

于 2012-08-16T15:26:10.343 に答える