[英]Mysql: Many to Many query based on Array
我有一個包含4個表的數據庫:
users following
------------- --------------------------------
| id | etc.. | | user_id (FK) | follow_id (FK) |
articles article_relations
------------- --------------------------------
| id | etc.. | | user_id(FK) | article_id (FK) |
用戶可以關注其他用戶,以便他們可以看到自己保存的文章。 因此,根據當前用戶ID,需要檢查他/她在“關注”表中關注的用戶。 現在將了解所關注的用戶。
根據這些關注者ID,需要檢查article_relations中在article_relations中鏈接到關注者的文章ID。 現在應該由哪些用戶保存哪些文章。
因此,現在在表格文章中,需要查詢article_ids,以保留文章保存給用戶的信息。
數據庫設計符合邏輯嗎? 在我看來,查詢“信息流”以查看您關注的用戶保存了哪些文章是非常多余的。
有人可以告訴我DB Design是否可以通過查詢來幫助我從您關注的用戶那里獲取文章,包括用戶信息嗎?
我試着直到褲子掉下來,然后搜索整個stackoverflow!
結構對我來說很好。 至於查詢,請嘗試此。 通過follow_id將下表(a)連接到article_relations表(b),然后通過article_id將其連接到article表(c),所有這些都基於當前用戶ID。
我包括虛構字段article_name和article_field,以作為您可能要從商品表中獲取的示例。
select c.id,
c.article_name,
c.article_field
from (following a
join article_relations b on a.follow_id = b.user_id)
join articles c on b.article_id = c.id
where a.user_id = current_user_id;
嘗試此查詢,它將獲得您的用戶信息以及當前用戶正在關注的人的信息,以及當前用戶正在關注的人所保存的文章。
SELECT u.*,
fu.*,
a.*
FROM following f
INNER JOIN users u ON u.id = f.user_id
INNER JOIN users fu ON fu.id = f.follow_id
INNER JOIN article_relations ar ON ar.user_id = f.follow_id
INNER JOIN articles a ON a.id = ar.article_id
WHERE f.user_id = <currentUserId>
只需將.*
更改為每個表中所需的字段即可。
只需要為此添加用戶表(d)。
select c.id,
c.article_name,
c.article_field,
d.id
from ((following a
join article_relations b on a.follow_id = b.user_id)
join articles c on b.article_id = c.id)
join users d on a.user_id = d.id
where a.user_id = current_user_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.