这是一个 wordpress 数据库,我有 2 个感兴趣的表:posts 和 postmeta。我想要做的是获取 $term(searched by users) 并在 SQL 搜索中使用这个变量。
如果匹配,我要搜索的表是 meta_value(如果 meta_key 是专辑年份)、post_content 和 post_title。
问题是 meta_value 与其他表位于不同的表中,但它的表 postmeta 具有 post_id,与 post.ID 相同。这使得知道某些元值属于某个帖子成为可能。
我尝试了以下代码,希望我能清楚地说明我需要什么,以便我可以从这里的人那里获得帮助。我真的需要帮助,我在谷歌或这里找不到答案。提前致谢。
$query_sql = "
SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta
,
(SELECT *
FROM $wpdb->posts
WHERE NOT wpdb->posts.post_status = 'inherit'
AND (wpdb->posts.post_type = 'page' OR wpdb->posts.post_type = 'post')
AND (wpdb->posts.post_content LIKE '%".$term."%' OR wpdb->posts.post_name LIKE '%".$term."%' OR $wpdb->postmeta.meta_value LIKE '%".$term."%')
ORDER BY wpdb->posts.post_title ASC) x
WHERE $wpdb->postmeta.post_id = $wpdb->posts.ID AND $wpdb->postmeta.meta_key = 'albumYear'
";
$query_result = $wpdb->get_results($query_sql, OBJECT);
SQL结构示例:
1.wp_posts
1.1 ID, post_type, post_content, post_status, post_name, post_title etc
2.wp_postmeta
2.1 post_id, meta_key, meta_value
因此,我需要在 meta_value(当 meta_key 为 X 时)、post_content、post_name 等中搜索 $term 的匹配项。但我还需要识别 Post im 搜索并返回其所有内容。