【问题标题】:Multiple Meta_Key Select on on Wordpress databaseWordpress 数据库上的多个 Meta_Key 选择
【发布时间】:2018-11-23 14:39:39
【问题描述】:

我开发了一个从 Wordpress 中选择事件的查询。我正在使用 where 子句来选择 meta_key eventstartdatemeta_value 在今天之后的位置。

我现在遇到的问题是,我还想过滤来自 meta_key '_VenueCity' 的第二个 meta_value

我尝试为 wp_postmeta 表设置别名并在 meta_key 上执行 where 但我想我缺少一个连接。

这是无需我的额外代码即可正常工作的代码。任何人都可以建议我如何让它工作吗?

SELECT

`wp_posts`.`ID` AS `EventID`,
`wp_posts`.`post_parent` AS `SeriesID`,
`wp_posts`.`post_title` AS `EventTitle`,
`wp_posts`.`post_content` AS `EventDescription`,
`wp_posts`.`post_excerpt` AS `EventSummary`,
`wp_posts`.`post_name` AS `EventSlug`,
min(`wp_postmeta`.`meta_value`) AS `EventStartDate`,
max(`tribe_event_end_date`.`meta_value`) AS `EventEndDate`,
`wp_posts`.`guid` AS `GUID`

FROM ((`wp_posts` 
JOIN `wp_postmeta` ON
(
  (`wp_posts`.`ID` = `wp_postmeta`.`post_id`)
)) 

LEFT JOIN `wp_postmeta` `tribe_event_end_date` ON
(
  (
    (`wp_posts`.`ID` = `tribe_event_end_date`.`post_id`) AND
    (`tribe_event_end_date`.`meta_key` = '_EventEndDate')
  )
))


WHERE
(
  (`wp_postmeta`.`meta_key` = '_EventStartDate') AND
  (`wp_posts`.`post_type` = 'tribe_events') AND
  (`wp_posts`.`post_status` = 'publish') AND
  (`tribe_event_end_date`.`meta_value` >= CURDATE())  
) 

GROUP BY 
`wp_posts`.`ID` 
ORDER BY 
`EventStartDate`,
`wp_posts`.`post_date`; 

【问题讨论】:

    标签: mysql sql wordpress


    【解决方案1】:

    我不会为您编写查询,但我会举例说明如何获取多个 postmeta 值。权力将在 where 子句中获得正确的值。 您还应该考虑要使用什么联接。

    SELECT
    p.post_title,
    pm1.meta_value,
    pm2.meta_value
    
    FROM wp_posts as p
    
    INNER JOIN wp_postmeta as pm1
    ON p.ID = pm1.post_id
    
    INNER JOIN wp_postmeta as pm2
    ON p.ID = pm2.post_id
    
    WHERE
    pm1.meta_key = '_my_postmeta_field1'
    AND
    pm2.meta_key <> '_not_this_field'
    

    【讨论】:

    • 感谢您的回复。可以修改我现有的查询以包含新查询吗?我需要现有的代码仍然可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多