0

我有一种情况,我需要选择一个帖子,但条件如图所示:-

同时发布两个选定的术语。

我试过了 :-

SELECT p.ID, p.post_title FROM wp_posts p 
LEFT JOIN `wp_term_relationships` t 
    ON p.ID = t.object_id 
LEFT JOIN `wp_term_taxonomy` tt 
    ON t.term_taxonomy_id = tt.term_taxonomy_id 
WHERE tt.term_id =86 
    AND tt.term_id=39 
GROUP BY t.object_id 
HAVING COUNT( t.term_taxonomy_id ) =2 
LIMIT 0,7

在这里,我想选择一个带有术语 id 86 和 39 的帖子。这两个 id 在同一个表中。

4

3 回答 3

0

使用 IN 子句

SELECT p.ID
,p.post_title
FROM wp_posts p
LEFT JOIN 'wp_term_relationships' t ON p.ID = t.object_id
LEFT JOIN 'wp_term_taxonomy' tt ON t.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.term_id IN (86,39)
GROUP BY t.object_id
HAVING COUNT(t.term_taxonomy_id) = 2 LIMIT 0,7
于 2013-05-17T06:00:36.763 回答
0

您可以按如下方式编写您的 where 条件:

WHERE tt.term_id in (86,39) 
于 2013-05-17T06:00:46.723 回答
0

这些表之间有什么关系?

此选择有效,但我认为您可以尝试另一种方式,您有标签而不是代码吗?不管怎样,看看这个。

SELECT 
    p.ID
FROM 
    wp_posts p 
LEFT JOIN wp_term_relationships t ON (p.ID = t.object_id)
WHERE 
    exists (
        SELECT tt.term_taxonomy_id FROM wp_term_taxonomy tt
        WHERE tt.term_taxonomy_id = t.term_taxonomy_id 
        and tt.term_id in(86,39)
    )
group by p.ID
having count(p.ID) = 2
于 2013-05-17T06:08:15.190 回答