Как отсортировать результаты MySQL на основе определенного внешнего значения? - PullRequest
0 голосов
/ 22 июля 2009

Вот мои таблицы БД:

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

Например, имя поля может быть «Имя», а значение OrderField может быть «Джеймс».

Используя только запрос MySQL, как эффективно отсортировать Заказы на основе полей OrderFields? Чтобы быть немного более конкретным:

Скажем, мне нужен список заказов, отсортированных по полю "Имя", и у меня уже есть идентификатор этого поля. Как я могу написать запрос, включив в него оператор ORDER BY для сортировки по полю имени, указанному в заказе?

1 Ответ

1 голос
/ 22 июля 2009

Ваш запрос должен выглядеть примерно так:

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 - это идентификатор поля «Имя».
Внешнее объединение используется в том случае, если у вас есть заказы, в которых не заполнено поле «Имя» - в этом случае они все равно будут получены. Если вы уверены, что этого никогда не произойдет (или не хотите, чтобы они были выбраны), замените его внутренним соединением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...