我是delphi新手,想请教各位大大以下语句该如何写?
我在access中创建数据库"球队战绩",结构如下:
年份   比赛类型      冠军        冠军国家     亚军       季军 
1998   德甲        凯泽斯劳滕              拜仁慕尼黑   勒沃库森
1998   西甲        巴塞罗那
1998   意甲        尤文图斯                国际米兰     罗马
1998   英超        阿森纳
1998   世界杯      法国                    巴西         克罗地亚
1998   欧洲冠军杯  皇家马德里    西班牙    尤文图斯
1998   欧洲联盟杯  国际米兰      意大利    拉齐奥
1998   欧洲超级杯  切尔西        英格兰
1998   南美解放者杯 达伽马       巴西
1999
......在form8中控件有:combobox,button,dbgrid,DataSource,ADOConnection,ADOQuery.要实现:选择combobox中的比赛类型,按button,在dbgrid中显示选中的"比赛类型"的成绩排行.如选择比赛类型为"欧洲冠军杯",则在dbgrid中显示的结果如下:
球队        夺冠次数  亚军次数  季军次数
皇家马德里    9        N11        N12
AC米兰        6        N21        N22
阿贾克斯      4        N31        N32
......
我在button的click事件中写如下代码:
procedure TForm8.xpButton1Click(Sender: TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select 冠军,count(*) from 球队战绩 where 比赛类型 like ''%'+combobox1.Text+'%'' group by 冠军 order by count(*) desc');
adoquery1.Open;
end;
这段语句执行后只能显示出冠军球队及夺冠次数,小弟才疏学浅,实在不知道该怎么写语句才能显示出亚军次数及季军次数(即上述的N11,N12等).请各位老大指教一下.

解决方案 »

  1.   

    select 冠军,count(*) ,select 亚军,count(*) from .....,select 季军, count(*) from
    .........
      

  2.   

    access 这样的操作不懂,不过用临时表来几次,或者多次嵌套,应该还是比较容易的
      

  3.   

    二楼,您是指这样写么?
    select 冠军,count(*),亚军,count(*),季军,count(*) from 球队战绩 where 比赛类型 like ''%'+combobox1.Text+'%'' group by 冠军 order by count(*) desc
    这样写执行时出错,"试图执行的查询中不包含作为合计函数一部分的特定表达"亚军"".
    如果写成
    select 冠军,count(*),亚军,count(*),季军,count(*) from 球队战绩 where 比赛类型 like ''%'+combobox1.Text+'%'' group by 冠军,亚军,季军 order by count(*) desc
    执行里则把每次的冠亚季军全列出,次数都为1次,这不是我想要的结果.
      

  4.   

    新建一个视图 View_球队战绩
    SELECT 比赛类型, 冠军 AS 球队, COUNT(*) AS 冠军次数, 0 AS 亚军次数, 0 AS 季军次数 FROM 球队战绩 group by 冠军, 比赛类型
    UNION
    SELECT 比赛类型, 亚军 AS 球队, 0 AS 冠军次数, COUNT(*) AS 亚军次数, 0 AS 季军次数 FROM 球队战绩 group by 亚军, 比赛类型
    UNION
    SELECT 比赛类型, 季军 AS 球队, 0 AS 冠军次数, 0 AS 亚军次数, COUNT(*) AS 季军次数 FROM 球队战绩 group by 季军, 比赛类型然后的语句就比较简单了
    'SELECT 球队, SUM(冠军次数) AS 冠军, SUM(亚军次数) AS 亚军,  SUM(季军次数) AS 季军 FROM View_球队战绩 WHERE 比赛类型 like '+ QuotedStr('%'+combobox1.Text+'%')+ ' GROUP BY 球队'