求救sql语句??? (50分)

  • 主题发起人 主题发起人 死水
  • 开始时间 开始时间

死水

Unregistered / Unconfirmed
GUEST, unregistred user!
我有两个表

表 a
Id_a name age
10 王二 20

表 b
Id_b Id_a family fname
1 10 哥哥 王一
2 10 姐姐 王小梅
3 10 老爸 王大民

我想输入“10",然后就在label1,label2上显示姓名,年龄
然后把 family +fname 两个字段值合并为一个字符串,然后再加到listbox1中,
listbox1的内容格式如下:
哥哥:王一
姐姐:王小梅
老爸:王大民
各位说该怎么做,能不能用一条sql语句获得查询结果?

本人数据库太差了,大侠们不要见笑啊 [:)]
 
我一般要用两条查询语句,不知道大侠们是怎么做的?
 
select a.name,
a.age,
b.family,
b.fname
from a,
b
where a.id_a=b.id_a and
a.id_a='10'
if (query.recordcount>0) then
begin
label1.caption:=Query.fieldbyname('name').AsString;
label2.caption:=Query.fieldbyname('age').AsString;
while (query.eof()) do
begin
Listbox1.items.add(Query.fieldbyname('family').AsString+':'+Query.fieldbyname('fname').AsString);
Query.next;
end;
end;


//可以实现但效率不高

 
很简单的呀
select a.name,a.age,b.family||':'||b.fname from a,b where a.id_a=b.id_a;
with query do
try
close;
sql.clear;
sql.add(上面的语句);
prepare;
open;

except
close;
end;

用该SQL会得出三条记录值.
然后你把任意一条中前两个字段记入label1,label2即可, 然后用query.first,query.next
依次取出最后一个字段值写入你的listbox1就行了。
就这么简单, 给分吧
 
Select a.name,a.age,b.family,b.fname from a inner join b On a.Id_a = b.Id_a

就可以得到你想要的东东了!

 
大侠们的方法我都试验过,如果是显示在dbgrid里面就最好
因为返回的查询结果是:
name age family fname
王二 20 哥哥 王一
王二 20 姐姐 王小梅
王二 20 老爸 王大民

如果我的表a再加一个字段,如 image字段(用来存放照片)
那么用大侠们的方法来做,是否很浪费内存? 如下:
name age image family fname
王二 20 哥哥 王一
王二 20 姐姐 王小梅
王二 20 老爸 王大民

因为我的查询结果不需要在dbgrid中显示啊
 
var
astr:string;
begin
astr:='select name,age from a where id_a=10';
query1.close;
query1.clear;
query1.add(astr);
query1.open;
label1.caption:=query1.fieldbyname('name').asstring;
label2.caption:=query1.fieldbyname('age').asstring;
astr:='select family+'':''+fname as fname from b where id_b=10'
query1.close;
query1.clear;
query1.add(astr);
query1.open;
while (query1.eof()) do
begin
Listbox1.items.add(Query1.fieldbyname('fname').AsString;
Query1.next;
end;
end;
 
pengjinlongex也是用两条查询语句的,不知道大侠们还有什么高招?
或者是否我的表结构设计不太好,需要重新设计?

用spymaster, icelily7631, BigDao三位大侠的方法是可以的,不过如果再加一个字段image存放图片
那么这样查询,查询结果中就有重复
name age image family fname
王二 20 《图片》 哥哥 王一
王二 20 《图片》 姐姐 王小梅
王二 20 《图片》 老爸 王大民

“王二 20 《图片》
王二 20 《图片》”
重复了两次,是不是很浪费内存啊???
 
大侠,帮帮忙,给点建议也行啊
 
要想不浪费内存就只能查两次,
要想得到这种结果好像只能这样了
 
大侠们没有遇到这种情况吗,大家也是查询两次吗???
给点建议吧。。。
 
我的数据库水平还不如你呢。我从来没有做过数据库。如果你有关于API方面的问题,我们到是可以讨论一下。
 
liguang,多谢您捧场啊,
我都问了一天了,dfw人气越来越差
 
>>“王二 20 《图片》
>> 王二 20 《图片》”
>>重复了两次,是不是很浪费内存啊???
不会浪费,因为你的图片是没有下载的!
如果你觉得浪费,那就把image字段从列表中去掉,要下载图片的时候再执行一条SQL专门
下载图片。
 
还有没有啊?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部