如何在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.

我希望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,
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 = ?

非常感谢。这就是我想要的。