我有這個表:與多行獲取從關係表中的數據
博客
id
name
user_id // author - relational to "users"
用戶
id
nickname
avatar
suscriptions
id
blog_id // relational to "blogs"
user_id // relational to "users"
這樣做是爲了顯示在網站上是這樣的:
Blogname
Created By Stack
Suscriptions: Overflow, Easy, Robinson, Porter
我是從blogs
SELECT
b.id,
b.name,
b.user_id,
u.nickname as user_nickname,
u.avatar as user_avatar
FROM blogs b
LEFT JOIN users u ON b.user_id = u.id
獲取所有數據使用PHP,我創建的所有blogs ID
數組,因此我可以將它們與IN運算符一起使用,如下所示:
SELECT
s.id,
s.blog_id,
u.nickname,
u.avatar
FROM suscriptions s
LEFT JOIN users u ON s.user_id = u.id
WHERE s.blog_id IN (1, 2, 3)
And t再次使用PHP來排序結果。
但是,有沒有更好的方法?我正在考慮只使用MySQL而不使用PHP。也許在一個查詢中獲取所有數據?或者什麼是獲得這個最好的方法?
重要的是要記住blog
可以有幾個subscriptions
。
2012年我發現這個問題有點類似:JOIN three tables and aggregate data from multiple rows for every DISTINCT row in separate column 但是OP說它真的很慢,所以我現在有點迷路了。
你使用PHP核心或一些框架? –
@SulthanAllaudeen僅用於數據庫處理的PDO –