我想要一个sql查询来返回以下数据:
DES_EVENT | DATE_EVENT | INSCRIBED_PARTICIPANTS
我的表格(隐藏其他栏目)
**EVENT**
ID
DES_EVENT
DATE_EVENT
**EVENT_ACCESS**
NAME
EVENT_ID
**PARTICIPANT**
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:不是单组组功能)
如何获得正确的结果?
答案 0 :(得分:1)
如果我理解你,你想要
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
如果这不是你想要的,你可以发布一些样本数据并发布你想要的结果吗?像你所做的那样描述结果是很好的,但是一些具体的测试用例可能有助于澄清事情。
答案 1 :(得分:1)
听起来你想要这个:
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 = ?