我正在尝试使用posts_join
筛选以联接2个表:wp_postmeta
到wp_posts
. 我是SQL的新手,所以我不确定自己是否感到困惑,因为我不了解WordPress是如何实现的posts_join
, 或者如果我不理解SQL语法。
我的问题是:
为什么join语句中只使用一个表?我认为join语句需要2个表,这是因为posts_join
筛选器假定您总是将表加入到wp_posts
?法典中的示例https://codex.wordpress.org/Plugin_API/Filter_Reference/posts_join使用类似的连接情况wp_postmeta
到wp_posts
.
$join .= "LEFT JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id ";
根据这个例子,我可以看到
$wpdb->postmeta
(即。
wp_postmeta
) 显式声明为要联接的表之一。但根据我对SQL的理解,我认为
$wpdb->posts
也必须在ON条款前说明,如:
$join .= "$wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id ";
所以我很困惑为什么
$wpdb->posts
在ON子句之前未指定。WordPress还如何知道要联接的第二个表是什么?
谢谢你的帮助。