[英]Difficult PHP/MySQL code
我有 3 個數據庫表
基本上,我編寫了一個腳本,讓您可以通過活動(如狀態)更新您的個人資料,並能夠彼此成為朋友(使用朋友表,用戶 ID + 朋友用戶 ID = 他們的朋友)
但是,當涉及到顯示這些更新的主頁時,我可以完全顯示我的(用戶登錄),但朋友的更新不顯示。
我遇到了問題,因為似乎需要進行很多查詢,選擇登錄到朋友表的用戶並獲取他們的朋友用戶 ID...然后是另一個選擇查詢以選擇用戶登錄的所有狀態id 和朋友 id。 然后另一個選擇查詢從所有用戶配置文件中選擇信息,以在狀態旁邊顯示他們的姓名。
目前,我只能想到循環查詢並將 id 放入數組中,然后將數組放入選擇查詢中以供朋友更新並顯示它們..有更好的方法嗎? 代碼一團糟,哈哈,我對查詢的數量感到困惑(對於朋友和登錄的用戶,基本上每個查詢 2 個)必須是一種更簡單的方法,哈哈
您可以通過執行類似的操作來獲取用戶的更新和用戶朋友的更新。
SELECT u.*
FROM updates u INNER JOIN
(SELECT friendsuserid as userid FROM friends WHERE userid = [youruserid]
UNION
SELECT userid FROM friends WHERE friendsuserid = [youruserid]
)f
ON u.userid = f.userid
錫川,
是的,我似乎只能得到這個
select u.* from statusupdates u INNER JOIN (select friendsuserid from friends where userid = '2' UNION SELECT userid from friends where userid = '2')f on u.userid = f.friendsuserid;SELECT u.userid,u.email,u.name FROM users u INNER JOIN (SELECT friendsuserid FROM friends WHERE userid = '2' UNION SELECT userid FROM friends WHERE userid = '2')f ON u.userid = f.friendsuserid;
但是我認為這實際上是兩個查詢是否正確? 在 mysql 命令行中(測試查詢以查看它們是否在我編碼之前給了我需要的東西)給了我我需要的一切。 但是很確定 mysql 不會在 php 代碼中接受它,因為它是兩個查詢。 我試過使用內連接將用戶表添加到它,但它似乎不正確
編輯:
在命令行中搞砸之后,我設法得到了我需要的東西
SELECT s.status,u.name,f.friendsuserid FROM statusupdates s 加入用戶 u ON s.userid=u.userid 加入朋友 f ON u.userid=f.friendsuserid;
然而,這只給我我的朋友更新,而不是我的。 我試過把一個 where 放進去,但它不起作用.. 我現在可以拉出我需要的一切,除了我自己的更新,它只會顯示 $_SESSION['userid'] 狀態和他們的朋友嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.