【问题标题】:inner join on mysql just work with one columnmysql 上的内部连接只适用于一列
【发布时间】: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


    【解决方案1】:

    改变

    (de.meta_key = 'date_end' AND ds.post_id = wp_posts.ID)
    --> repeated match of ds.post_id=wp.posts.ID
    

    (de.meta_key = 'date_end' AND de.post_id = wp_posts.ID)
    

    【讨论】:

    • 别担心,总有人已经疯了愿意帮忙
    猜你喜欢
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 2014-06-02
    • 2016-03-21
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多