Delphi尝试根据查询显示已完成百分比的图表

时间:2015-04-28 19:37:07

标签: sql ms-access

我正在尝试生成条形图(使用Delphi 2010中的TChart)来显示正在进行的拍摄项目的完成百分比。我希望我可以使用查询来获得每部电影的最终百分比。从一开始,我们就知道电影需要的镜头数量。这存储在表FILM中。在表SHOTS中,我们记录了FILMID以及迄今为止拍摄的照片数量。表结构可以在这里看到:

enter image description here

1)我意识到我需要计算到目前为止拍摄的镜头数量,所以我使用了这个SQL语句:

SELECT CountOfShots.CountOfShotNumber, FILM.NumberOfShots, [CountOfShotNumber]/[NumberOfShots]*100 AS Complete
FROM CountOfShots INNER JOIN FILM ON CountOfShots.FilmID = FILM.FilmID;

..这个名为'CountOfShots'的查询给出了以下内容:

enter image description here

2)现在,为了计算完成百分比,我的第二个SQL语句(使用上一个查询)如下:

SELECT CountOfShots.CountOfShotNumber, FILM.NumberOfShots, [CountOfShotNumber]/[NumberOfShots]*100 AS Complete
FROM CountOfShots INNER JOIN FILM ON CountOfShots.FilmID = FILM.FilmID;

这给了我正在寻找的内容,如下所示:

enter image description here

现在,有一种方法可以组合两个查询,而不是有两个查询,可能有一个子查询。我一直想把这个拿出来,但是让我难过。

3)如果我有这个查询提取数据,那么我应该能够使用Delphi(TChart)中的图表来显示完成百分比。

对不起,这是漫长的啰嗦。其他细节是: (使用ADO连接,使用MS Access 2003数据库)。

感谢

1 个答案:

答案 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