2

次のような注文のアイテムを含むテーブルが 1 つあります。

Product | Color | Size | Size Range ID (from a different, joined table)
-----------------------------------------------------------------------
Shirt   | Blue  |  L   |   1
Shirt   | Blue  |  M   |   1
Shirt   | Blue  |  S   |   1

上記の表では、サイズがアルファベット順に並べられていることに注意してください。

次のようなサイズ範囲テーブルもあります。

id | size_01 | size_02 | size_03
--------------------------------
 1 |    S    |   M     |   L  

最初のテーブルの項目を 2 番目のテーブルのサイズの位置で強制的に ORDER BY するにはどうすればよいですか?

4

2 に答える 2

1

joinテーブルを結合してからfield()、列リスト内の位置を取得するために使用できます。

select i.*
from items i left outer join
     SizeRange sr
     on i.SizeRangeId = sr.SizeRangeId
order by field(i.Size, sr.size_01, sr.size_02, sr.size_03)
于 2013-08-30T18:53:36.293 に答える
0
SELECT
  MAX(CASE Size WHEN 'S' THEN Size ELSE '' END) AS 'size_01',
  MAX(CASE Size WHEN 'L' THEN Size ELSE '' END) AS 'size_02',
  MAX(CASE Size WHEN 'M' THEN Size ELSE '' END) AS 'size_03'
FROM Test
GROUP BY Product
于 2013-08-30T19:06:05.467 に答える