3

このMySQLselectで注文する方法がわからないようです。あなたが私を助けてくれることを願っています。

テーベル:

カテゴリ

catId, catParentId, catDisplay
1      0            1
2      0            1
3      0            1
4      1            1
5      1            1

カテゴリ_翻訳

transId, catId, catName, catDesc, langId
1        1      Title1   Desc1    1
2        2      Title2   Desc2    1
3        3      Title3   Desc3    1
4        4      Title4   Desc4    1
5        5      Title5   Desc5    1

言語

langId, langName, langCode
1       Danish    da
2       English   en

私の質問:

SELECT `categories`.`catId`,
       `categories`.`catParentId`,
       `categories`.`catDisplay`,
       `categories_translation`.`catName`,
       `categories_translation`.`catDesc`,
       `language`.`langCode`
FROM   `categories`
INNER JOIN `categories_translation` ON `categories_translation`.`catId` = `categories`.`catId`
INNER JOIN `language` ON `language`.`langId` = `categories_translation`.`langId`
WHERE `language`.`langCode` = 'da'

これで、必要なものが返されますが、子カテゴリを親に注文する方法があるため、結果は次のようになります。

望ましい結果:

catId | catParentId | catDisplay | catName | catDesc | langCode
1       0             1            Title1    Desc1     da
4       1             1            Title4    Desc4     da
5       1             1            Title5    Desc5     da
2       0             1            Title2    Desc2     da
3       0             1            Title3    Desc3     da

注文してみましたが、思い通りの結果が得られるようです。

4

3 に答える 3

2

次のことを試してください。

ORDER BY
    CASE WHEN categories.catParentId = 0 THEN
        categories.catId
    ELSE 
        categories.catParentId
    END,
    CASE WHEN categories.catParentId = 0 THEN
        0
    ELSE
        categories.catId
    END

注文を受けていない人にとっては、望ましい結果を次のように考える方が簡単です。

catId | catParentId | orderingCategory
1       0             1.0
4       1             1.4
5       1             1.5
2       0             2.0
3       0             3.0

つまり、これはカテゴリの階層であり、OPは、各親カテゴリの後に子カテゴリが続くように結果を並べ替えたいと考えています。

于 2012-10-18T18:27:18.930 に答える
2

それが不可能であるため、あなたはあなたが望む結果を得ることができません。希望通りの注文ができるパターンやIDが見当たりません。

なぜタイトル4、タイトル5が最初に行くのですか?

ロジックが見えません。例が不完全な場合もあれば、CatNameとCatDescの順序が必要なキーである場合もあります。

于 2012-10-18T18:18:41.743 に答える
-3
ORDER BY catParentID, catID, ...
于 2012-10-18T18:14:13.020 に答える