0

テーブルからレコードを取得するが、それらを別のテーブルでソートする SQL ステートメントを作成しようとしています。Main - 私の主な製品テーブルです MainCategory - 製品のカテゴリです

各製品は複数のカテゴリに属する​​ことができるため、メインには、製品が属するすべてのカテゴリの ID を含む CategoryIds というフィールドがあります。(それが間違ったやり方だと今知った)

テーブルのレイアウト:

ここに画像の説明を入力

したがって、基本的に、ブランドなどのカテゴリをクリックすると、各カテゴリの製品を並べ替えて、必要な順序で表示できるようにしたいので、テーブル CatSort を作成しましたDisOrder はそれらが表示される方法です。

だから私のページでSQL文:

Select * 
From Main  
Where CategoryIds = '11' OR 
      CategoryIds LIKE '11,%' OR 
      CategoryIds LIKE '%, 11,%' OR 
      CategoryIds LIKE '%, 11'

カテゴリ「ブランド」のすべての製品をプルしますが、そのカテゴリのすべてのレコードがCatSortにあるとは限らないことを念頭に置いて、そのSQLステートメントを拡張してCatSortで並べ替えるにはどうすればよいですか? CatSort に追加されるのは、実際に好みの順序で並べ替えられた場合のみです. ただし、新しい製品がそのカテゴリに追加された場合、自動的に CatSort に追加されることはありません.)

4

2 に答える 2

0

基本的な問題は、Mainにクエリを実行する場合、Mainのレコードには複数のカテゴリが含まれる可能性があるため、並べ替え順序に複数の値が存在する可能性があることです。

次のクエリは一種の作業になります。

Select * 
From Main
     Left outer join CatSort on CatSort.ProdId = Main.Id
Where CategoryIds = '11' OR 
      CategoryIds LIKE '11,%' OR 
      CategoryIds LIKE '%, 11,%' OR 
      CategoryIds LIKE '%, 11'

要求されたとおりに実行されますが、並べ替え順序が複数ある場合は、メインレコードがそれらの並べ替え順序の各位置に表示されます。

于 2012-09-28T16:13:17.033 に答える