WordPress站点上SQL中的多个连接,通过postmeta引用

时间:2012-06-29 20:23:18

标签: sql wordpress

这个描述会有点挑战。我有一个非常不寻常的案例,我需要在WordPress中编写查询。

我有一个名为artists的帖子类型,另一个名为performances的帖子类型。艺术家使用键artist_id获得元值。 演奏具有相同的元键,引用艺术家。我意识到这个替代ID的子系统是荒谬的,但事情是出于其他原因,你必须相信我,他们是明智的。

性能具有show_set_time的另一个元密钥,其中包含UNIX时间戳。

我需要编写一个查询,可以让我所有艺术家在某个特定日期之后都有表现。

如果不清楚,请告诉我。我再次完全认识到ID键很荒谬,但还有其他因素。

1 个答案:

答案 0 :(得分:1)

这显然未经测试,但我认为它应该有效:

SELECT *

FROM (SELECT NULL) AS dummy

INNER JOIN
wp_posts AS artist
ON artist.post_type = `artist`

INNER JOIN
wp_postmeta AS meta_artist_id
 ON meta_artist_id.post_id = artist.ID
AND meta_artist_id.meta_key = 'artist_id'


INNER JOIN
wp_posts AS performance
ON artist.post_type = `performance`

INNER JOIN
wp_postmeta AS meta_performance_artist_id
 ON meta_performance_artist_id.post_id = performance.ID
AND meta_performance_artist_id.meta_key = 'artist_id'
AND meta_performance_artist_id.meta_value = meta_artist_id.meta_value

INNER JOIN
wp_postmeta AS meta_performance_date
 ON meta_performance_date.post_id = performance.ID
AND meta_performance_date.meta_key = 'show_set_time'

WHERE
meta_performance_date.meta_value > DATE('2012-12-21')