再问,Sql 中的 Group by 的用法,在线等。

ma369 2004-09-09 09:19:43
表aaa
字段 a b c
--------------------------------------
aaa a1 c1
aaa a2 c2
aaa a3 c3
bbb 1a 1c
bbb 2a 2c
--------------------------------------
使用两个 ComboBox1, ComboBox2,
首先通过 Sql.Add('Select a,Count(*) from aaa group by a');
字段内容加入ComboBox1中,
ComboBox1内容为:aaa
bbb

要求当选择ComboBox1为aaa时,
ComboBox2内容为:a1
a2
a3
当选择ComboBox1为bbb时,
ComboBox2内容为:1a
2a

如何去做?



...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ma369 2004-09-09
  • 打赏
  • 举报
回复
谢了各位
feihuxiong 2004-09-09
  • 打赏
  • 举报
回复
distinct 保证相同值的项只列出一次
ma369 2004-09-09
  • 打赏
  • 举报
回复
谢谢楼上几位,解决了,不过还要问一下:

“distinct“在此作何用?
ma369 2004-09-09
  • 打赏
  • 举报
回复
试试看
power_source 2004-09-09
  • 打赏
  • 举报
回复
with ADOQuery1 do//先把字段a的值写入combobox1中
begin
Close;
SQL.Clear;
SQL.Add('select distinct a from aaa );
Open;
first;
Combobox1.Items.Clear;
while not Eof do
begin
Combobox1.Items.Add(FieldByName('a').AsString);
Next;
end;
end;

在ComboBox1的OnChange事件中:
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select distinct b from aaa where a='''+combobox1.text+'''');
Open;
First;
Combobox2.Items.Clear;
while not Eof do
begin
Combobox2.Items.Add(FieldByName('b').AsString);
Next;
end;
end;
抱朴守拙 2004-09-09
  • 打赏
  • 举报
回复
在ComboBox1的OnChange事件中:
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select distinct b from aaa where a='''+combobox1.text+'''');
Open;
First;
Combobox2.Items.Clear;
while not Eof do
begin
Combobox2.Items.Add(FieldByName('b').AsString);
Next;
end;
end;
断肠人在天涯 2004-09-09
  • 打赏
  • 举报
回复
楼上的,正确
yangmanyuan 2004-09-09
  • 打赏
  • 举报
回复
首先第一个,select distinct a from aaa,这样效率高
第二个,select distinct b from aaa where a:=combobox1.text
然后把得到的值给combobox2.items

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧