4

製品ページには、製品ページに関連付けられている現在のカラーオプションを一覧表示するドロップダウンがあります。

この例では、製品ページのSKUは250Eであり、次の場所で利用できます。

GREEN
BLACK

顧客がGREENを選択した場合、以下に示すcustom_order値に基づいて最初にGREEN値を表示するようにデータを変更するMySQLコマンドを実行したいと思います。

開始値は他のデータ項目を上書きする必要があり、その後、custom_order値を保持する必要があります。custom_orderフィールドには、c1、c2のような文字が含まれています(これらは常に下部にあります)

Colour Table
============
ID      COLOURID        NAME
-------------------------------------
2           5           BLACK
3           6           GREEN


Product Table
=============
ID      SKU         PICTURE URL             COLOURID            CUSTOM_ORDER        
-----------------------------------------------------------------
22      250E        cdn_hash_1.jpg          5                   1
23      250E        cdn_hash_2.jpg          5                   2
24      250E        cdn_hash_3.jpg          5                   3
225     250E        cdn_hash_4.jpg          5                   4
226     250E        cdn_hash_5.jpg          6                   5
227     250E        cdn_hash_6.jpg          6                   6
325     250E        cdn_hash_c1.jpg         -                   c1
426     250E        cdn_hash_c2.jpg         -                   c2
527     250E        cdn_hash_c3.jpg         -                   c3

SELECT*FROM製品WHEREORDERBY custom_order DESC

今、私は次のことをしたいと思います:

SELECT * FROM products WHERE ORDER BY custom_order AND START VALUE = '6'

したがって、何があっても、c1、c2はそのまま残り、結果は次のようになります。

22      250E        cdn_hash_5.jpg          6                   5
23      250E        cdn_hash_6.jpg          6                   6
24      250E        cdn_hash_1.jpg          5                   1
225     250E        cdn_hash_2.jpg          5                   2
226     250E        cdn_hash_3.jpg          5                   3
227     250E        cdn_hash_4.jpg          5                   4
325     250E        cdn_hash_c1.jpg         -                   c1
426     250E        cdn_hash_c2.jpg         -                   c2
527     250E        cdn_hash_c3.jpg         -                   c3
4

3 に答える 3

10

これが私が探していた答えです。私はこれに反対票を投じないことを望みますが、私はこれをなんとか解決することができました。

簡単な用語をもう一度説明しましょう。MySQL ORDERBY+で開始します。

MySQL:

id | name  |
------------
1  | Joe   |
2  | Craig |
3  | Shawn |
4  | Ryan  |
5  | Seth  |

PHP:

$a = mysql_query("SELECT * FROM table_name ORDER BY name DESC");

私がやりたいのは、id:3から始めたいので、次のように出力する必要があります。

3,4,5,1,2

解決策1

SELECT id, name
FROM table_name
ORDER BY id < 3, id

結果:

3  Shawn
4  Ryan
5  Seth
1  Joe
2  Craig

解決策2

あなたはFIELD、例えばを使用することができます

SELECT * 
FROM products 
ORDER BY FIELD(`order`, 6) ASC
于 2013-01-16T13:22:29.077 に答える
0

WHERE条件はORDER BY句の前に来る必要があります

SELECT * 
FROM products 
WHERE START_VALUE = '6' 
ORDER BY order

補足として、ORDERRESERVEDキーワードです。それを回避する1つの方法は、バッククォートでラップすることです。例えば、

SELECT * 
FROM products 
WHERE START_VALUE = '6' 
ORDER BY `order`

もう1つは、ALIAS

SELECT * 
FROM products p
WHERE START_VALUE = '6' 
ORDER BY p.order

しかし、あなたの質問を振り返って、あなたはデータをカスタムオーダーしたいですか?あなたはFIELD、例えばを使用することができます

SELECT * 
FROM products 
ORDER BY FIELD(`order`, 6) ASC
于 2013-01-16T12:38:42.623 に答える
-2

質問をクリアしてください。すべてのレコードが必要な場合は、以下のようなクエリを使用してください...

SELECT * FROM COLOURID ASCで注文する製品から、DESCを注文する

于 2013-01-16T12:46:57.760 に答える