存储过程 错误(20)

  • 主题发起人 主题发起人 爱情魔咒
  • 开始时间 开始时间

爱情魔咒

Unregistered / Unconfirmed
GUEST, unregistred user!
CREATE PROCEDURE PROC_Select @TableID varchar(20)=' 'AS Select A.* from OrderBody A Left Join OrderHeader B on A.OrderItemID=(select B.OrderItemID from OrderHeader where B.TableID=@TableID)GO各位大哥:得到A表 其中A表中的OrderItemID等于B表中的OrderItemID 但是B表中的OrderItemID必须满足 B.TableID=@TableID B表中一条记录 与A表中多条记录对应老是提示:子查询返回多条记录,子查询放在=后面或者作为表达式是不允许的 : 请问各位大哥应该怎么改这个存储过程啊 急救啊!!!没分了只有这么多了
 
Select A.* from OrderBody A Left Join OrderHeader B on A.OrderItemID =(select distinct B.OrderItemID from OrderHeader where B.TableID=@TableID)
 
B表中一条记录 与A表中多条记录对应---------------- Select A.* from OrderBody A Left Join (Select * from OrderHeader where TableID=@TableID ) B on A.OrderItemID = B.OrderItemID.由于你使用的是Left Join,所以上面查询结果和下面的相同。Select A.* from OrderBody
 
如果B表OrderHeader中有OrderItemID B 表OrderBody中还没有生成 TableID 不一样ADOQuery执行存储过程 查出来时空的 用DBGrid显示 如果时空记录 DBGrid还是现实OrderBody表中的所有记录啊 我用的是Formshow方法 来显示 ADOQuery
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部