我已经尝试了很多方法来解决这个问题,到目前为止所有方法都失败了。
我有3张桌子。包含所有帐户信息的用户表。一个事件表,其中包含未来促销的所有详细信息,以及一个列表,其中包含一个列表,其中包含所有邀请参加活动的人员及其状态。
这是我目前的查询:
SELECT u.Name, l.*, e.*
FROM event e, user u, list l
WHERE e.event_id IN (SELECT l.event_id
FROM list l, event e, user u
WHERE e.event_id=l.event_id
AND l.user_id=1)
AND u.user_id=e.creator_id
AND l.event_id IN (SELECT l.event_id
FROM list l
WHERE l.user_id=1
AND l.event_id=e.event_id)
AND l.user_id=1 ORDER BY e.creationDate DESC
我正在尝试添加一个简单的计数,以便返回一个新的“Going”列,这将计算所有被邀请的人:
| User_ID | Name | Event_ID | Event_Name | Date | List_ID | Accepted | Going |
|---------|------|----------|------------|------|---------|----------|-------|
在我的查询中添加一个简单的计数会返回错误“命令不同步;您现在无法运行此命令”:
SELECT u.Name, l.*, e.*, (SELECT l.user_id, COUNT(*) as count
FROM list l
GROUP BY l.user_id
ORDER BY count DESC) as Going)
FROM event e, user u, list l
WHERE e.event_id IN (SELECT l.event_id
FROM list l, event e, user u
WHERE e.event_id=l.event_id
AND l.user_id=1)
AND u.user_id=e.creator_id
AND l.event_id IN (SELECT l.event_id
FROM list l
WHERE l.user_id=1
AND l.event_id=e.event_id)
AND l.user_id=1 ORDER BY e.creationDate DESC
我已经读过它,这似乎与调用函数的顺序有关。我不确定如何计算它,因为计数似乎在正确的位置。
答案 0 :(得分:0)
您需要相关子查询,而不是group by
:
SELECT u.Name, l.*, e.*, (SELECT l.user_id, COUNT(*) as count
FROM list l2
WHERE l2.user_id = l.user_id
) as Going
我不确定count(*)
在子查询中做了什么。此外,您应该学习使用正确的显式join
语法,而不是隐式连接,它们不那么强大,更容易出错,而且更难阅读。