数据库查询的SQL,我不会写(50分)

  • 主题发起人 主题发起人 林枫
  • 开始时间 开始时间

林枫

Unregistered / Unconfirmed
GUEST, unregistred user!
1。有一个表有:产品名称,规格,价格 三个字段,我的程序需要将这个表中的记录查询出来,
在表中“产品名称”相同的记录只能显示一条,好象是用一个叫Discinic的关键字,只可以对单个字段查询的,
我的程序一定要显示所有字段,应该怎么写这个SQL语句呢?

2。我用ADODataSet.Refresh.语句刷新数据时,如果在之前删除了一条记录,就会显示错误:
提示有数据已经删除。所以我一直用:
ADODataSet.Close;
ADODataSet.CommandText:='Select*from '+表名; //去掉这行有时会出错所,以总是将它加上
ADODataSet.Open;

当要一次更新多个表时,就要写好多组这样的语句,不知道有没有比这好的方法。

 
1.'select distinct 产品名称,规格,价格 form table',distinct不是只能对单个字段查询.
 
你一次只能显示一 个表吧,
那其他表用ExecSQL来执行,不open不可以吗?
 
to HunterTeam:
像你说的那样查询出的结果跟原来是一样的,根本不是想要的
 
1:
如果你的产品名称只有一个,就把它设为主键
2:
你的表有没有主键?没有你就不用写程序了!
 
有没有能解决问题的?
 
很同意ysai的观点。
在你的表里,产品名应该是一个主键。
同一个产品名称会有不同的规格和价格吗?
要么你可以这样。
select 产品名称,规格,价格 form table group by 产品名称,规格,价格
 
select 产品名称,min(规格),min(价格) form table group by 产品名称
 
产品名称当主键不好,应设一个自增字段作为主键,用query来实现产品名的单一记录
或写一个存储过程.
 
是这样的,产品的价格在不同的时期价格也是不同的,所以我将一个自增字段作为主键,这样在有相同的产品名称时,
就可以有不同的价格了。但这样的话,在输入销售单时,需要在一个产品列表中选择一个适当的产品,为了方便,我想将
相同名称的产品放在一起,便于查找。排序结果应该象这样的:

大江洗衣粉 300g 3.00
大江洗衣粉 300g 3.20
大江洗衣粉 300g 2.86
小龙彩电 29" 1890
小龙彩电 29" 2100

如果产品名称能按拼音排序就更好了 看看用SQL能不能做到啊?
 
distinct产品列表,然后把其它信息放到临时表中再返回
 
to ysai
产品名称怎么可以做主键呢?产品名称有多个记录是相同的,看题再说吧.
to 林枫
建议另加一个字段做主键.就用产品名称来排序更好啊,产品名称做主索引,价格为从索引,这样查起来方便.
 
To:magic6326
主键在表中不是唯一的吗?可以再加吗?
另怎么在代码中建主索引和从索引啊?
 
我的意思是另做一个字段为主键,别用产品名称作主键.如果你已有主键就不用了.
select **** order by 产品名称,价格
如果要升降序的话加ASC | DESC
 
自增字段很麻烦的,在access下。
 
多人接受答案了。
 
后退
顶部