2012-08-30 39 views
0

我想要一個SQL查詢返回以下數據:如何在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:不是單組分組函數)

我怎樣才能得到正確的結果?

回答

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 

如果這不是你想要的,你可以發表位採樣數據,並張貼您正在尋找的結果?描述你所做的結果很不錯,但是一些具體的測試用例可能有助於澄清事情。

+0

謝謝!這就是我想要的。 –

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 = ? 
相關問題