我有一个包含3个表的数据库,一个VOLUNTEER
表,一个TRAINING_EVENTS
表和一个TRAINING_INSTRUCTOR
表。
VOLUNTEER
表包含有关以自动递增Vol_ID
为标记的人的信息。
TRAINING_EVENTS
表包含由自动递增的Event_ID
标记的事件的日期和时间。它还为每个事件分配一个Hours_Credited
字段,表示志愿者作为该特定事件的指导者所获得的学分时数。
TRAINING_INSTRUCTOR
表包含Vol_ID
和Event_id
。 (表明哪个志愿者是活动的指导者)。
我想查询一个志愿者是教师的特定事件,然后将这些事件的计入时间加起来
以下代码是我尝试使用的代码,但会导致错误。
SELECT SUM(Hours_Credited)
FROM TRAINING_EVENTS AS TE, TRAINING_INSTRUCTOR AS TI
WHERE TE.EVENT_ID = TI.EVENT_ID AND TI.EVENT_ID IN
(SELECT TI.EVENT_ID
FROM VOLUNTEER AS V, TRAINING_INSTRUCTOR AS TI
WHERE V.VOL_ID = TI.VOL_ID AND V.VOL_ID = 3);
答案 0 :(得分:0)
您正在重复使用remoteC
查询中的别名git fetch
。
使用TI
别名...
IN
答案 1 :(得分:0)
已编辑删除与TI的冗余连接并提取所有VOL_ID。
SELECT TI.VOL_ID, SUM(TE.Hours_Credited) as HOURS_CREDITED
FROM TRAINING_EVENTS AS TE,
(SELECT TI.EVENT_ID, TI.VOL_ID
FROM VOLUNTEER AS V, TRAINING_INSTRUCTOR AS TI
WHERE V.VOL_ID = TI.VOL_ID) AS TI
WHERE TE.EVENT_ID = TI.EVENT_ID
GROUP BY TI.VOL_ID
ORDER BY TI.VOL_ID;
答案 2 :(得分:0)
您可以使用JOIN
执行此操作:
SELECT v.NAME, SUM(Hours_Credited) as 'Hours_Credited'
FROM TRAINING_INSTRUCTOR TI
join TRAINING_EVENTS TE
on TI.Event_ID = TE.Event_ID
join VOLUNTEER V
on TI.VOL_ID = V.VOL_ID
group by V.VOL_ID
您可以在tutorial
尝试答案 3 :(得分:0)
如果您有输入VOL_ID,并且想要输出志愿者的HOURS_CREDITED总和,则此查询将解决:
SELECT SUM(TE.Hours_Credited)
FROM
TRAINING_EVENTS AS TE, TRAINING_INSTRUCTOR AS TI
WHERE
TE.EVENT_ID = TI.EVENT_ID AND TI.VOL_ID = 3;