select name,lesson,score,total,
(select count(*)+1 from students b
where name<>'王五' and lesson=a.lesson and b.total>a.total) count
from students a
where name='王五'
lvxq,
////找出一个人课程////////
with query1 do
begin
with sql do
begin
close; //
clear;
text:='select * from 档案 where 姓名=:date1';
parambyname('date1').Value:=edit2.Text;
end;
open;
end;
//////rc把课程加入“课程临时”表中////////
query2.Close;
query2.SQL.Clear;
query2.SQL.Add('select * from 课程临时');
query2.Open;
query2.First;
while not query2.Eof do
query2.Delete; ////清空“课程临时”表
query1.First;
while not query1.Eof do
begin
query2.Append;
query2.FieldByName('课程').AsString:=query1.FieldByName('课程').AsString;
query2.Post;
query1.Next;////加入数据
end;
end;
query2.Close;
query2.SQL.Clear;
query2.SQL.Add('select * from 课程临时');
query2.Open;
query2.First;
while not query2.Eof do
begin
i:=query2.FieldByName('课程').AsString;
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from 档案');
query1.SQL.Add('where 课程='+''''+i+'''');
query1.SQL.Add('order by 总分 desc');
query1.Open; ////找出档案中的每一个课程,
query1.First;
j:=0;
while not query1.Eof do
begin
j:=j+1;
if query1.FieldByName('姓名').AsString=edit2.Text then
begin
query1.Edit;
query1.FieldByName('名次').Value:=j;
query1.Post;
query1.Last;
end;
query1.Next;
end;
query2.Next;
end;
with query1 do
begin
with sql do
begin
close; //
clear;
text:='select * from 档案 where 姓名=:date1';
parambyname('date1').Value:=edit2.Text;
end;
open;
end;
你先这样吧,等我有点空再帮你一次搞定,先分两次
QueryClass.close;
QueryClass.sql.Clear;
QueryClass.sql.Add('select DISTINCT 名字,课程,成绩,总分 from 档案 where 名字=:IndexName');
QueryClass.ParamByName('IndexName').value=Edit1.Text;
QueryClass.Open;
QueryTurn.Close;
QueryTurn.Sql.Clear;
mySQLStr:='select count(*)+1 as 名次 from 档案 where ,成绩>IndexScore and '+
'课程=IndexClass ';
QueryTurn.sql.add(mySQLStr);
QueryTurn.close;
for i:=0 to QueryClass.RecordCount do
begin
StrName:=QueryClass.FieldByName('名字').asString;
strClass:=QueryClass.FieldByName('课程').asString;
StrScore:=QueryClass.FieldByName('成绩').asString;
Queryturn.ParamByName('IndexClass').value:=strclass;
Queryturn.ParamByName('IndexScore').value:=strScore;
QueryTurn.Open;
StrTurn:=QueryTurn.FieldByName('名次').as String;
QueryTurn.close;
Memo1.Lines.add(StrName+'----'+StrClass+'----'+StrScore+'----'+strturn);
end;