作者snickelf (snick)
看板Database
标题[SQL ] inner join 太多表,跑出错误讯息
时间Fri Apr 2 00:35:40 2010
大家好
我用的是MS-SQL,现在遇到资料笔数过多,
还有每个表都仅需几个栏位而去join 整张表
试了二个版本,都有错误讯息如下:
========= 第一个版本 ========
Microsoft OLE DB Provider for SQL Server 错误 '80004005'
子查询传回不只 1 个值。这种状况在子查询之後有 =、!=、<、<=、>、>=
或是子查询作为运算式使用时是不允许的。
select fh.BEGIN_DATE, fh.FORM_NO, fh.FORM_STATUS,
hm.hnduser,hm.prbu, emp.EMP_NAME, hm.rqtrsn,
dm.prdseq, dm.prddsc, dm.prdspec, dm.qtyor,
dm.umord, vm.prvseq, vm.vndnam, vm.paydesc,
ld.idcury, ld.vunit, ld.qunit, ld.bunit, ld.result,
(select ordno from ippodm where ippodm.fprno =
dm.prdprno and ippodm.fprseq = dm.prdseq) as pono
from FM_FORM_HEADER fh inner join ipprhm hm on fh.FORM_NO = hm.prhno
inner join AM_EMPLOYEE emp on hm.prreq = emp.LOGIN_NAME
inner join ipprdm dm on hm.prhno = dm.prdprno
inner join ipprvm vm on dm.prdprno = vm.prvno
inner join iprld ld on dm.prdprno = ld.idno and
dm.prdseq = ld.idseq and vm.prvno = ld.idno and
vm.prvseq = ld.idvenseq
where (fh.FORM_KIND = 'BQY.FORM.T057') and
(fh.FORM_STATUS in ('WA', 'UA', 'AP'))
我测试过子查询ordno会有很多笔资料,所以将子查询修改成用inner join
=========== 第二个版本 ===========
回应物件 错误 'ASP 0251 : 80004005'
超出回应缓冲区限制
执行 ASP 页导致回应缓冲区超出其设定限制。
SELECT fh.BEGIN_DATE, fh.FORM_NO, fh.FORM_STATUS, hm.hnduser, hm.prbu,
emp.EMP_NAME, hm.rqtrsn, dm.prdseq, dm.prddsc, dm.prdspec,
dm.qtyor, dm.umord, vm.prvseq, vm.vndnam, vm.paydesc,
ld.idcury, ld.vunit,ld.qunit, ld.bunit, ld.result, odm.ordno AS pono
改了这边 ^^^^^^^^^^^^^^^^^
FROM FM_FORM_HEADER AS fh INNER JOIN ipprhm AS hm ON fh.FORM_NO = hm.prhno
INNER JOIN AM_EMPLOYEE AS emp ON hm.prreq = emp.LOGIN_NAME
INNER JOIN ipprdm AS dm ON hm.prhno = dm.prdprno
新增这行 INNER JOIN ippodm AS odm ON dm.prdprno = odm.fprno
INNER JOIN ipprvm AS vm ON dm.prdprno = vm.prvno
INNER JOIN iprld AS ld ON dm.prdprno = ld.idno
AND dm.prdseq = ld.idseq AND vm.prvno = ld.idno
AND vm.prvseq = ld.idvenseq AND dm.prdseq = odm.fprseq
^^^^^^^^^^^^^^^^^^^^^^ 还有这边
WHERE (fh.FORM_KIND = 'BQY.FORM.T057')
AND (fh.FORM_STATUS IN ('WA', 'UA', 'AP')) "
这个结果让我去google了一下,蛮多都说要改buffer的大小,
我也照着去找c:里的档案,下了指令去扩充了,可是结果一样 冏
请问各位前辈们,能有什麽办法让他跑出我会很开心的结果呢???
先谢谢大家了~~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.117.173.195
1F:推 Antzzz:後面那个看起来是网页的问题? 04/02 18:11
2F:推 rushcat:同楼上 第二个可能是ASP取资料的时候 忘记MoveNext了= = 04/05 17:35
3F:→ snickelf:请问第一个解法有救吗? 04/06 23:30
4F:推 daniel1205:在 pono 那个 subquery 加上 top 1 试试. 04/12 01:35