首先,我有以下SQL語句:結合多元複合的MySQL語句
SELECT * FROM members
WHERE username IN (
SELECT friend2 as username FROM list_friends
WHERE (friend1 = 'user' AND friend2 <> 'user')
UNION
SELECT friend1 as username FROM list_friends
WHERE (friend2 = 'user' AND friend1 <> 'user')
)
上面的代碼完美的作品。它返回'members'表中與匹配給定用戶朋友列表的所有行,這是通過搜索給定用戶的表list_friends創建的,並從列friend1或friend2中獲取朋友名稱。
就像我說的那樣,它的工作完美無瑕。
接下來,我有以下SQL語句:
SELECT username,
(SELECT COUNT(*) FROM sites WHERE username = 'user')
+ (SELECT COUNT(*) FROM banners WHERE username = 'user')
+ (SELECT COUNT(*) FROM stream_updates WHERE username = 'user')
AS cnt from members WHERE username = 'user'
這都將COUNT的總和結合給定的行和輸出的計爲一列CNT。
我想結合這兩個語句,所以我可以得到一個返回朋友,cnt的結果。
示例輸出將是非常簡單的:
username | cnt
----------------------
a friend | 6525
diff friend | 983
yet again | 3485
我可以很容易地在兩個PHP循環運行這一點,首先從第一個查詢得到的朋友的名字,然後使用foreach和運行第二個查詢在第一個查詢的循環中,我只是想知道是否有更好的方法,或者是一種將語句組合成一個以獲得上述輸出的方式。
你想從第一個查詢或所有行的計數? –
第一個查詢返回「朋友」。然後我希望每個朋友都可以通過第二個查詢來獲取該朋友的「cnt」。 – Bruce
爲了讓這個真的很清楚,我們爲一個給定的用戶獲得了一個「朋友列表」,那麼這個朋友列表中的每個用戶都會計算他們執行的總「行動」。 – Bruce