我是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等).请各位老大指教一下.
我在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等).请各位老大指教一下.
解决方案 »
- listbox的tag问题
- ?帮帮忙?好几天都没有搞明白~~先谢谢了
- 怎样通过odbc的连接取得其连接的数据库名?
- 如何判断数据表的某列是否存在?
- 问题
- formula自定义函数
- 探讨这样一个问题:有一个edit的控件,以edit.text的内容作为查询条件对数据库进行操作,但是对所查询的结果要另存在另一个表中,最后在完全
- 又一个简单的小问题!在线等候.......
- 我用QUERY,DATASOURE,TABLE 三个控件实现对表的查找过滤! 那有没有办法让我把它做成activex控件!然后导入到VB中使用,提供一个表输出结果!
- 谈谈Delphi5 汉化后的BUG!
- 如何解决ADOConnection连接异常断开后程序不响应的问题?
- 哪位大虾有 install shield for delphi 4.0
.........
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次,这不是我想要的结果.
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 球队'