2016-08-18 81 views
-1

我有一個PHP/MySQL的網站,通過它我發佈兩種類型的內容:加入多個表基於價值

  1. 新聞帖子(我的內容)
  2. 訪問者提交的材料(詩歌,藝術品等)

這些內容類型中的每一個都有自己的單獨表格,每個表格都有一個存儲帖子/提交標題的列。我用第三張表來存儲新聞帖子和提交內容的評論。我在評論表中設置了一個名爲content_category的列,它將添加「發佈」「提交」的值以跟蹤它所屬的內容類型。還有另一列存儲新聞帖子/訪客提交的主鍵/ ID值,稱爲content_id

想法是,當從數據庫中提取評論時,我還想顯示帖子的標題或提交。我想要實現的邏輯基本上是這樣的:如果記錄的content_category列值爲「post」,那麼在post_ID上加入POSTS表,但如果content_category列的值爲「submission」,則在submit_id上加入SUBMISSIONS表。

這是我此刻的代碼,但它不工作:(

SELECT * FROM comments 
LEFT JOIN posts AS details ON comments.content_id = details.post_id 
WHERE comments.content_category = 'post' 

UNION 

SELECT * FROM comments 
LEFT JOIN submissions AS details ON comments.content_id = details.submission_id 
WHERE comments.content_category = 'submission' 

你的幫助是非常讚賞:(

+1

什麼意思與不工作..你有錯誤..?或者你有我rng結果?並在這種情況下顯示適當的數據樣本和預期結果。 – scaisEdge

回答

0

UNION需要有相同數量的字段

SELECT comments.*, details.some_other_field_from_posts FROM comments LEFT JOIN posts AS details ON comments.content_id = details.post_id WHERE comments.content_category 
= 'post' 

UNION 

SELECT comments.*, details.some_other_field_from_submissions FROM comments LEFT JOIN submissions AS details ON comments.content_id = details.submission_id WHERE comments.content_category = 'submission' 

希望它有幫助