如何在sql查询中获得正确的结果?
我希望sql查询返回以下数据:如何在sql查询中获得正确的结果?,sql,oracle,Sql,Oracle,我希望sql查询返回以下数据: DES_EVENT | DATE_EVENT | INSCRIBED_PARTICIPANTS 并且我的表是(其他列是隐藏的) 注意:表参与者注册参与者注册的每个事件 我想知道一个给定的用户组织了什么活动,有多少参与者参加了 我已尝试执行以下查询: SELECT e.des_event, e.date FROM event e, event_access ea WHERE ea.name = ? AND ea.event_id = e.id SELECT e.
DES_EVENT | DATE_EVENT | INSCRIBED_PARTICIPANTS
并且我的表是(其他列是隐藏的)
注意:表参与者注册参与者注册的每个事件
我想知道一个给定的用户组织了什么活动,有多少参与者参加了
我已尝试执行以下查询:
SELECT
e.des_event,
e.date
FROM
event e,
event_access ea
WHERE
ea.name = ?
AND
ea.event_id = e.id
SELECT
e.des_event,
e.date
FROM
event e,
event_access ea,
participant p
WHERE
ea.name = ?
AND
ea.event_id = e.id
AND
p.event_id = ea.event_id
通过这个查询,我无法获得参与者的数量。因此,我尝试执行以下查询:
SELECT
e.des_event,
e.date
FROM
event e,
event_access ea
WHERE
ea.name = ?
AND
ea.event_id = e.id
SELECT
e.des_event,
e.date
FROM
event e,
event_access ea,
participant p
WHERE
ea.name = ?
AND
ea.event_id = e.id
AND
p.event_id = ea.event_id
每个事件的行都会对参与此事件的每个参与者重复,但我想在sql结果的另一列中获得这些重复数,就像我在问题顶部所做的那样
如果使用count()函数,oracle将返回一个错误
(ORA-00937:非单个组功能)
我怎样才能得到正确的结果 如果我理解你,你想
SELECT e.des_event,
e.date,
count(*) num_participants
FROM event e,
event_access ea,
participant p
WHERE ea.name = ?
AND ea.event_id = e.id
AND p.event_id = ea.event_id
GROUP BY e.ddes_event, e.date
如果这不是你想要的,你能发布一些样本数据并发布你想要的结果吗?像您所做的那样描述结果很好,但一些具体的测试用例可能有助于澄清问题。听起来您希望这样:
select e.des_event,
e.date_event,
p.NumberOfParticipants
from event e
inner join event_access ea
on e.id = ea.event_id
inner join
(
select count(*) NumberOfParticipants, event_id
from participant
group by event_id
) p
on ea.event_id = p.event_id
where ea.name = ?
非常感谢。这就是我想要的。