我正在尝试生成条形图(使用Delphi 2010中的TChart)来显示正在进行的拍摄项目的完成百分比。我希望我可以使用查询来获得每部电影的最终百分比。从一开始,我们就知道电影需要的镜头数量。这存储在表FILM中。在表SHOTS中,我们记录了FILMID以及迄今为止拍摄的照片数量。表结构可以在这里看到:
1)我意识到我需要计算到目前为止拍摄的镜头数量,所以我使用了这个SQL语句:
SELECT CountOfShots.CountOfShotNumber, FILM.NumberOfShots, [CountOfShotNumber]/[NumberOfShots]*100 AS Complete
FROM CountOfShots INNER JOIN FILM ON CountOfShots.FilmID = FILM.FilmID;
..这个名为'CountOfShots'的查询给出了以下内容:
2)现在,为了计算完成百分比,我的第二个SQL语句(使用上一个查询)如下:
SELECT CountOfShots.CountOfShotNumber, FILM.NumberOfShots, [CountOfShotNumber]/[NumberOfShots]*100 AS Complete
FROM CountOfShots INNER JOIN FILM ON CountOfShots.FilmID = FILM.FilmID;
这给了我正在寻找的内容,如下所示:
现在,有一种方法可以组合两个查询,而不是有两个查询,可能有一个子查询。我一直想把这个拿出来,但是让我难过。
3)如果我有这个查询提取数据,那么我应该能够使用Delphi(TChart)中的图表来显示完成百分比。
对不起,这是漫长的啰嗦。其他细节是: (使用ADO连接,使用MS Access 2003数据库)。
感谢
答案 0 :(得分:2)
首先,使用左外连接而不是内连接。这样,如果你有没有拍摄记录的电影,它将把电影显示为0%。
SELECT film.filmid, film.numberofshots, count(shot.filmid) AS countofshotnumber,
count(shot.filmid)/film.numberofshots AS percentoffilmshot
FROM film left outer join shot on film.filmid = shot.filmid
GROUP BY film.filmid, film.numberofshots