如何去掉不想查询的字段?(50分)

  • 主题发起人 主题发起人 moutocean
  • 开始时间 开始时间
M

moutocean

Unregistered / Unconfirmed
GUEST, unregistred user!
有个数据库表格table1,其中有60个字段:
日期,地点,温度1,温度2....温度56,检测设备1,检测设备2.

我只想取出 (地点,温度1,温度2....温度56)这57个字段值,

而不想把(日期,检测设备1,检测设备2)
这三个字段值一起取出,请问
用什麽办法写出的SQL语句最简洁.
 
没有什么简单的办法,只有:

Create View aaa
as
select 地点,温度1,温度2....温度56 from ...

Select * from aaa 好了!



select 地点,温度1,温度2....温度56 from ...

或用

select * from ...

你程序中不要取那几个字段,不就行了?!
 
不知你是否是这意思。
var i:Integer;
sqlstr:String;
begin
sqlstr:='地点';
for i:=1 to 56 do
sqlstr:=sqlstr+',温度'+IntToStr(i);
with Query1 do begin
SQL.Clear;
SQL.Add('select '+sqlstr+' from table1');
open;
end;
end;
 
二位高手:
我的意思是能不能用在sql语句中采用排除 日期,检测设备1,检测设备2.
的方法来取得 地点,温度1,温度2....温度56 的值.
说的在大一点,如果并不知道数据库表格table1中字段的个数,只知道其中包括
日期,检测设备1,检测设备2 这三个字段,但是我想把其余字段的值取出来,并不关
心(日期,检测设备1,检测设备2 )这三个字段的状态,请问该如何做?
 
那么只好在Delphi的程序中做了:

如果使用Table ,

Table1.open;

判断一下各个字段的名称是否为
if Table1.Fields.FieldName <> '日期' or Table1.Fields .FieldName <> '检测设备1' Then

这样应该可以吧?

不过数据库中的字段名不应该是中文的吧?

 
这不是一样吗?
var i:Integer;
sqlstr:String;
begin
for i:=0 to Table1.Fields.Count-1 do
if pos(Table1.Fields.FieldName,'日期检测设备1检测设备2')=0 then//此句为简化形式,你可根据实际要求修改
sqlstr:=sqlstr+','+Table1.Fields.FieldName;
with Query1 do begin
SQL.Clear;
SQL.Add('select '+sqlstr+' from table1');
open;
end;
end;
 
hanson 和 menxin的办法差不多
都很简洁,应该能解决问题了.
 
hanson 和 menxin:你们好!我用你们的方法编了下面一段程序:
procedure TForm1.FormCreate(Sender: TObject);
var i:Integer; sqlstr:String;
begin
query1.sql.clear;
query1.sql.add('select * from "d:/employee.db"');
query1.open;
for i:=0 to query1.Fields.Count-1 do
if pos(query1.Fields.FieldName,'empno')=0 then
sqlstr:=sqlstr+','+query1.Fields.FieldName;
with Query1 do
begin
SQL.Clear;
SQL.Add('select '+sqlstr+' from "d:/employee.db"');
open;
end;
end;
end.
但是在程序编译时出现错误:list index out of bounds(0);
why?


 
Sorry.应将sqlstr中的第一个','去掉.

...
SQL.Clear;
SQL.Add('select '+copy(sqlstr,2,length(sqlstr)-1)+' from "d:/employee.db"');
open;
 
如此麻烦,
不如用SELECT * from ...
在query1的fields editor 中选择 add all fields
再删除或隐藏不需要的字段
 
多人接受答案了。
 
后退
顶部