【发布时间】:2011-12-05 18:01:01
【问题描述】:
我不知道我是不是醒了,但我无法解决这个问题:S
我正在尝试从 wp_posts 表中获取项目,将其与表 wp_postmeta 连接两次(以获取不同的值)并使用这两个值创建条件。
SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_posts.* FROM wp_posts
INNER JOIN wp_postmeta ds ON (ds.meta_key = 'date_start' AND ds.post_id = wp_posts.ID)
INNER JOIN wp_postmeta de ON (de.meta_key = 'date_end' AND ds.post_id = wp_posts.ID)
WHERE 1 = 1
AND wp_posts.post_type = 'event'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'closed' OR wp_posts.post_status = 'private' OR wp_posts.post_status = 'hidden')
AND CAST(ds.meta_value AS DECIMAL(10,0)) <= 1323043200
AND (CAST(de.meta_value AS DECIMAL(10,0)) >= 1323129599 OR de.meta_value = '')
ORDER BY ds.meta_value DESC
LIMIT 0, 5
我不明白为什么所有列在'de' table中只加入一行
我的意思是:
ID meta_1 post_id meta_2
1 1 1 xxx
2 2 1 xxx
3 3 1 xxx
...
在de.meta_key = 'date_end' AND ds.post_id = wp_posts.ID 的条件下,我告诉 wp_posts 的 ID 应该等于 'de' table (wp_postmeta) 的 post_id,但它没有得到尊重:|
知道我的错误吗???
【问题讨论】:
标签: php mysql wordpress join inner-join