急;请大家帮我优化一条SQL语句.(50分)

  • 主题发起人 主题发起人 qegdgh
  • 开始时间 开始时间
Q

qegdgh

Unregistered / Unconfirmed
GUEST, unregistred user!
谁可以帮我优化一下;
吗;
select f.绿单号,f.新郎姓名,f.新娘姓名,f.身份证, f.新郎联系方式,f.新娘联系方式,
f.通讯地址,f.推荐次数,

(SELECT sum(d.点数)
FROM 客户资料 a,推荐细节 b,推荐人 c,套系 d where a.绿单号 = b.被推荐绿单
and c.id=b.推荐人id and c.绿单号 =f.绿单号 and (a.套系=d.名称)) as 总点数,

(SELECT sum(兑换点数) FROM 推荐人兑换表 where 兑换人绿单号 =f.绿单号) as 已用点数,

(SELECT sum(d.点数)-(SELECT sum(兑换点数) FROM 推荐人兑换表 where 兑换人绿单号 =f.绿单号)
FROM 客户资料 a,推荐细节 b,推荐人 c,套系 d where a.绿单号 = b.被推荐绿单
and c.id=b.推荐人id and c.绿单号 =f.绿单号 and (a.套系=d.名称)) as 剩余点数

from 推荐人 f where (f.新娘姓名拼音 like '%')


剩余点数 这个字段;总点数-已用点数 这样通不过;
 
有人可以解决吗?
 
这句有问题 "推荐细节 A,客户资料 B WHERE B.绿单号=A.被推荐绿单)"
应该用关联方法"INNER JOIN"
怎么用你查下吧
 
update 客户资料 set 有推荐人标志=0 WHERE (有推荐人标志=1) AND
NOT 绿单号 IN (SELECT 被推荐绿单 FROM 推荐细节 A
LEFT JOIN ON 客户资料 B ON B.绿单号=A.被推荐绿单)
 
ls正解。。。
 
NOT 绿单号 IN 有這種寫法嗎?

是這樣寫的吧
绿单号 NOT IN
 
update 客户资料 set 有推荐人标志=0 WHERE (有推荐人标志=1) AND
绿单号 NOT IN (SELECT 被推荐绿单 FROM 推荐细节 A,客户资料 B WHERE B.绿单号=A.被推荐绿单)
 
SELECT distinct 被推荐绿单 FROM 推荐细节 A,客户资料 B WHERE B.绿单号=A.被推荐绿单
 
UPDATE A
SET 有推荐人标志=0
FROM 客户资料 A
WHERE (有推荐人标志=1) AND NOT EXISTS(SELECT 1 FROM 推荐细节 WHERE 绿单号 = A.被推荐绿单)
 
top 1 ...update..
 
各位更新的时候不能更新两行或以上的;否则报错;我用游标解决了;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部