首先,我有以下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