2011-12-07 32 views
0

以下PHP中的SQL查詢應該顯示基於標題和標記條目的結果。這些標籤位於表wp_terms中,wp_posts中的帖子位於該表中。在中間我們有wp_term_relationships來鏈接所有東西。mySQL搜索引擎仍然沒有爲多個表獲取關係

wp_posts我們想要的字段是post_idwp_term_relationships領域object_id應匹配的帖子ID和term_taxonomy_id應匹配term_idwp_termsterm_id應匹配term_taxonomy_idwp_terms_relationships。然後,我們希望wp_terms的字段name用於搜索。

此刻此代碼不包括在搜索中的術語。

SELECT ID, post_name, post_title, post_date 
FROM wp_posts 
JOIN wp_term_relationships 
ON  object_id = wp_posts.id 
LEFT JOIN wp_terms 
ON  term_id = wp_term_relationships.term_taxonomy_id 

WHERE 
wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' 
AND (wp_posts.post_title LIKE '%$my_text%' OR wp_terms.name LIKE '%$my_text%')" 

我們如何得到這個工作。

UPDATE

什麼是應該發生的是搜索應該返回基於文章標題或標籤後的結果。問題是帖子標籤被視爲條款,並在另一個表格中提供幫助,這需要三分之一才能找到相應的ID。

我會盡量映射相關但是。

TABLE: wp_posts 

================================================================== 
    post_id  ====  post_title 
================================================================== 

TABLE wp_terms 

================================================================== 
     term_id  ====  name 
================================================================== 

TABLE wp_term_relationships 

================================================================== 
     object_id  ====  term_taxonomy_id 
================================================================== 

因此我們使用wp_term_relationships獲得其長期的ID(term_taxonomy_id)反映該職位(object_id);

希望幫助

表結構圖像

enter image description here

+0

很難準確地理解需要發生什麼,而不看到喲你的數據庫模式。 – rdlowrey

+0

@rdlowrey更多詳細信息添加 –

+0

我編輯了我的帖子,我不確定您是否還希望爲檢索到的帖子獲取每個標籤的名稱?但你可以嘗試更新的版本。 – Cyclonecode

回答

0

我不知道我理解正確的問題,但如果你想獲得相關術語的名字,那麼這將工作:

$query = 
"SELECT DISTINCT ID, post_name, post_title, post_date 
    FROM wp_posts 
    JOIN wp_term_relationships 
    ON object_id = wp_posts.id 
    LEFT JOIN wp_terms 
    ON term_id = wp_term_relationships.term_taxonomy_id 
    WHERE 
    wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' 
    AND (wp_posts.post_title LIKE '%$my_text%' OR wp_terms.name LIKE '%$my_text%')"; 
+0

有效但有一些缺陷。如果僅通過標籤而不是可能存在的標籤數量,它只接收一個帖子;如果關鍵字同時存在於標題和標籤中,則它將獲取同一帖子的多個版本 –

+0

我已更新問題具有表格結構的圖像 –