... 式數據庫/ 關聯式 資料 庫的必知要點! 否則算不上學懂SQL指令!了解 多個表格 同時查詢以及不同 表格 之間的關係JOIN Table: INNER JOIN 等連接, OU... ... <看更多>
inner join多個資料表 在 SQL 語法- WITH (NOLOCK)、暫存資料表、Join - Lazy Coding 的推薦與評價
在這一篇當中,會簡介SQL 語法的 WITH (NOLOCK) 、暫存資料表與Select Into, ... 當連接多個資料表時,使用 Inner Join 會比 Where 來得更容易閱讀。 ... <看更多>
inner join多個資料表 在 [SQL ] inner join 太多表,跑出錯誤訊息- 看板Database 的推薦與評價
大家好
我用的是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
... <看更多>