2013-05-17 43 views
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在同一個表後。

+0

爲什麼使用這個條件'HAVING COUNT(t.term_taxonomy_id)= 2'? –

回答

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 
+0

感謝這有助於。你很棒。 –

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 
+0

我已經使用IN子句但其在返回兩者的IDS。但我想顯示這兩個這些的帖子。這些不是至少一個。 86位置和39是美食。需要顯示滿足這兩個條件的帖子。 –

+0

你怎麼能表的同一列拿着兩個值的單行?如果它們是兩個不同行,你想他們,那麼()或「OR」是讓他們的方式。用表格元編輯帖子。這可能會有所幫助。 – Sanjeev

0

你可以寫你在那裏的條件如下:

WHERE tt.term_id in (86,39) 
+0

我已經使用IN子句但其在返回兩者的IDS。但我想顯示這兩個這些的帖子。這些不是至少一個。 86位置和39是美食。需要顯示滿足這兩個條件的帖子。 –

+0

我覺得OP希望有每個崗位兩個詞(86和39),在這種情況下,他不能用'IN'職位。 –

+0

是的。謝謝 –