簡體   English   中英

相關文章:通過標簽從不同的表中獲取記錄

[英]Related posts: Get records by tags from different tables

我正在新聞網站上工作。 像每個新聞站點一樣,會有新聞,專欄,視頻和照片畫廊。 我打算將這些不同類型的記錄保留在不同的表中,但將它們與標簽相關聯。 這是一個簡單的模式:

表格:新聞,視頻,圖庫,列,標簽,Post_to_tags

Post_to_tags:
-tagid
-postid
-posttype [新聞,視頻,畫廊,專欄]

現在,我需要做的是在單個查詢中獲取帖子的相關記錄。 加入一張桌子並獲得相關的帖子很容易,但是當涉及到不同的桌子時...有什么想法嗎?

您可能要在兩個查詢中執行此操作,因為在一個查詢中執行此操作會很丑陋,並且可能不會給您帶來很多好處。

因此,您將使用標記來獲取所有相關的postid,然后只需進行聯接即可獲取與postid相關的文章和相關記錄。

select n.*, g.*, v.* FROM News n 
   INNER JOIN Galleries g ON(g.postid=n.postid) 
   INNER JOIN Videos v ON(v.postid=n.postid) 
   WHERE n.postid IN(
     (SELECT p.postid FROM Post_to_tags p WHERE ...)
   )

這應該是一個起點,但是我看到了您的問題,因為您使用的是posttype。

為什么不忽略此查詢的posttype,而只對故事使用相同的postid,以便可以輕松地搜索它們。

如果查詢得到的字段數相同且數據類型相同,則可以使用UNION。

SELECT fielda, fieldb FROM news n 
  JOIN post_to_tags p ON (n.post_id=p.post_id) 
  where p.tag_id='x' and p.post_type='news'
UNION
SELECT fielda, fieldb FROM videos v 
  JOIN post_to_tags p ON (v.post_id=p.post_id) 
  where p.tag_id='x' and p.post_type='videos'

但是,在這種情況下,您可能需要重新考慮架構。 就像是:

  • 具有所有帖子類型通用字段的帖子表,以及帖子類型的標志字段
  • Details_X表具有特定於X型帖子的字段

將允許一個查詢:

SELECT fielda, fieldb FROM posts p 
  JOIN post_to_tags pt ON (p.post_id=pt.post_id) 
  where pt.tag_id='x';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM