以下是我的数据库表:
Field
- ID, name
Order
- Order ID, name, etc.
OrderField
- Order ID
- Field ID
- Value
例如,字段名称可能是“名字”,而OrderField值可能是“詹姆斯”。
仅使用MySQL查询,如何根据OrderFields有效地对订单进行排序?更具体一点:
我想要一个按“名字”字段排序的订单列表,我已经有了它的字段ID。如何编写查询以包含ORDER BY
语句,以按与订单关联的“名字”OrderField进行排序?
答案 0 :(得分: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 如果您的订单没有填充“名字”字段,则使用外部联接 - 在这种情况下,它们仍将被检索。如果您确定这种情况永远不会发生(或者您不希望它们被选中),请将其替换为内连接。