2009-07-22 13 views
0

が私のDBのテーブルです:たとえば特定の外部値に基づいてMySQLの結果をソートする方法は?ここで

Field 
    - ID, name 
Order 
    - Order ID, name, etc. 
OrderField 
    - Order ID 
    - Field ID 
    - Value 

、フィールド名は、「ファーストネーム」とOrderField値がかもしれかもしれ「ジェームズ。」

MySQLクエリのみを使用すると、効率的に並べ替えることができます注文はOrderFieldsに基づいていますか?もう少し具体的には:

「First Name」フィールドでソートされた注文のリストが必要です。フィールドIDはすでに持っています。注文に関連付けられた「名」OrderFieldによって並べ替えるためにORDER BYステートメントを含めるためにクエリを書く方法はありますか?

答えて

1

あなたのクエリのようなものでなければなりません:

SELECT Order.*, OrderField.Value 
    FROM Order 
    LEFT OUTER JOIN OrderField ON Order.`Order ID` = OrderField.`Order ID` 
WHERE OrderField.`Field ID` = :firstNameFieldId 
ORDER BY OrderField.Value 

:firstNameFieldIdは "姓" フィールドのIDです。
「ファーストネーム」フィールドに値が入力されていない注文がある場合に、外部ジョインが使用されます。この場合でも引き続き検索されます。これが起こらないことが確実であれば(または選択したくない場合)、内部結合に置き換えてください。

+0

ありがとうございますChssPly! –

+0

途中で大きな説明。 –

関連する問題