[英]How to query 3 tables in a single query?
對於第一篇文章,我真的很抱歉,因為我沒有解釋所有事情。
基本上我有3個表,一個表用於帖子,一個表用於類別,另一個用於將類別與帖子鏈接。
我希望在一個MySQL查詢中選擇特定類別下的帖子。
posts(id,title,body)
---------------------
125,Some title,Blah blah
categories(id,name)
---------------------
1,politic
2,entertainment
linker(categoryid,postid)
---------------------
2,125
我想在單個查詢中以示例方式獲取娛樂類別中的帖子,怎么辦?
謝謝
select
p.*
from
posts p
inner join linker l on l.postid = p.id
inner join categories c on c.categoryid = l.categoryid
where
c.name = 'entertainment'
這是完全相同的事情,您只需要將intead中的3個表聯接在一起:
SELECT P.id post_id,
P.title,
P.body,
C.id category_id,
C.name
FROM posts P
INNER JOIN linker L
ON P.id = L.postid
INNER JOIN categories C
ON L.categoryid = C.id
WHERE C.name = 'Category'
不要害怕做自己的測試。 如果您了解如何聯接兩個表,則應了解如何聯接三個,四個及更多。
以下SQL語句應為您嘗試做的事情提供基礎。
select p.*
from posts p
inner join linker l
on l.postid = p.id
inner join categories c
on l.categoryid = c.id
where c.name = 'entertainment'
如果帖子屬於2個類別,您仍然可以在select語句中使用帶DISTINCT的pinkfloydx33的查詢:
select
DISTINCT p.*
from
posts p
inner join linker l on l.postid = p.id
inner join categories c on c.categoryid = l.categoryid
where
c.name = 'entertainment'
結果集將僅顯示一條記錄。
如果僅在WHERE子句中指定一個類別,則結果將是每個帖子ID的一行。
無論哪種方式,當每個ID的結果可能超過一行時,都可以使用DISTINCT或GROUP BY,但是在那種情況下,我更喜歡第二行(GROUP BY)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.