【发布时间】:2010-12-21 21:55:21
【问题描述】:
我正在尝试创建一个 MySQL 语句,该语句将按语句本身计算的值进行排序。我的表格如下所示:
posts
+----+-----------+--------------+
| ID | post_type | post_content |
+----+-----------+--------------+
| 1 | post | Hello |
| 2 | post | world |
+----+-----------+--------------+
postmeta
+---------+----------+------------+
| post_id | meta_key | meta_value |
+---------+----------+------------+
| 1 | price | 50 |
| 1 | retail | 100 |
| 2 | price | 60 |
| 2 | retail | 90 |
+---------+----------+------------+
我正在尝试计算一个称为储蓄的值(.5 代表 ID=1,.3 代表 ID=2)然后按它排序。这是我到目前为止所拥有的,但我不确定如何跨 2 行进行计算(我发现的所有内容都是关于列之间的计算)。
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
WHERE wposts.ID = wpostmeta.post_id
AND wpostmeta.meta_key = 'Price'
AND wposts.post_type = 'post'
ORDER BY wpostmeta.meta_value DESC
感谢您的帮助!
【问题讨论】:
-
我知道这没有帮助,但如果您负责数据库,您可能应该对其进行重组,以便 'price' 和 'retail 是 2 个单独的列......特别是如果那些是仅有的 2 个元键。我认为那些元键类型的东西应该只用于更模糊的“设置”,这样你就不需要运行复杂的查询。
-
嗯,这是 wordpress 数据库模式,应该足够通用,可以处理几乎所有帖子相关项目的大多数键值对。
-
当然它足够通用:它重新实现了列。如果可能的话,使用真正的列仍然是一个更好的选择。
-
是的,WP 的做事方式可能会让您感到痛苦。我认为在 2.5 之前,它将元值放在列中,然后将每个 key=value 对移动到自己的行中。我确信这样做是有充分理由的,但结果是元表必须与其自身连接才能对其进行处理。谢谢你的帖子!
标签: mysql