【发布时间】:2013-12-05 15:30:44
【问题描述】:
我正在尝试查询两个 Wordpress 表,即。 posts 和 postmeta。
基本上我感兴趣的表和行是这样的:
| ---- ** posts ** ---- | | -------- ** postmeta ** ---------- |
| ID | post_type | | post_id | meta_key | meta_value |
|-----------------------| |------------------------------------|
| 1 | player | | 1 | number | 10 |
| 2 | player | | 2 | number | 20 |
| 3 | player | | 3 | othre_key | aaa |
| 4 | other_type | | 4 | other_key | xxx |
| 4 | other_type | | 5 | other_key | yyy |
| 4 | other_type | | 6 | other_key | zzz |
我想获取post_type = player 的所有帖子,并按postmeta.meta_value 对它们进行排序,其中postmeta.meta_key = number 是否存在postmeta 行。
到目前为止,我得到了这个:
SELECT a.ID, a.post_title, b.meta_value, b.meta_key
FROM $wpdb->posts AS a
INNER JOIN $wpdb->postmeta AS b
ON a.ID = b.post_id
AND b.meta_key = %s
WHERE a.post_status = %s
AND a.post_type = %s
GROUP BY a.ID
ORDER BY b.meta_value+(0) ASC, a.post_title ASC
...返回具有与其关联的数字 postmeta 的玩家。
如何将没有该 postmeta 的玩家附加到同一查询中的结果中,以便所需的结果看起来像这样?
| --- ** result ** ---- |
| ID | meta_value |
|-----------------------|
| 1 | 10 |
| 2 | 20 |
| 3 | null |
【问题讨论】: