[英]fetching multiple usernames from a database
我在網站上有一個評論版塊,如果可能的話,我想簡化一下,這樣對數據庫的影響不大。 當用戶選擇帖子時,如果該帖子具有與之關聯的評論,則會列出該評論。 當注釋列表時,它將從另一個表中獲取用戶名。 我將用戶的ID存儲在注釋表中,並使用該ID從users表中選擇記錄。 並顯示為“用戶”說:
可以說我在一個帖子上有1000條評論,它將在用戶表上點擊1000次以獲取用戶名。 我認為這可能是一個錯誤的設計。 我想到了一些解決方案,但不知道在這種情況下會建議什么。
我應該將用戶名存儲在注釋表中嗎?
我應該將所有已調用的用戶名存儲在會話數組中嗎?
將所有用戶名放在文件中,然后從文件中調用?
還是我沒有想到的另一種解決方案?
我有點困惑。 我以為我通過使用注釋表中的ID來做正確的事,然后使用它來獲取用戶名,但是在閱讀了大約一百萬篇有關對數據庫的影響較小的帖子后,我開始質疑自己。
哇,感謝所有有用的答案。 這是餐桌計划,我不知道為什么我最初沒有輸入。
笑話評論表:
id | author_id | joke_id | date_created | body
---+-----------+---------+--------------+-----
1 | 3 | 2 | 2011-06-12 | this is a comment
對於用戶:
id | user_name | password | email | date_joined | visible
---+-----------+----------+-------+-------------+---------
3 | booboo | password | email | todays_date | 1
這就是JOIN
的目的-因此您可以運行一個查詢並有效地從多個表中獲取組合信息。 例如:
SELECT comments.id, comments.content, users.name
FROM comments
JOIN users ON comments.user = users.id
WHERE comments.id in (1,2,3)
將查找ID為1、2和3的3條評論,還獲得每個評論者的用戶名,並返回如下所示的行:
comments.id | comments.content | users.name
------------+-------------------+---------
1 | "First comment." | "Poster1"
2 | "Second comment." | "Poster2"
3 | "Third comment." | "Poster3"
聽起來您的注釋表中有一個userID字段,但是需要查找用戶名,對嗎? 如果是這樣,JOIN將是最佳解決方案。
就像是:
SELECT *
FROM `comments`
LEFT JOIN `users` ON `users`.`id` = `comments`.`userid`
WHERE `postid`='1'
要閱讀有關聯接及其無限可能性的更多信息,請在此處閱讀
SELECT * FROM comments LEFT JOIN users ON comments.posterid = users.id
Google for LEFT JOIN了解更多信息:)
您是否允許多次使用同一用戶名? 如果不是,那么我將使用username
段作為users
表的PK,並將其存儲在comments
表中作為FK。 這樣可以很好地解決您的問題。
如果更改users
表的PK太大了,那么只需將用戶名存儲在comments
部分,因為您仍然可以使用該users
從users
表中選擇一條記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.