Запрос работает в Management Studio, но не от клиента
Вот запрос -
select maclin,mamatn,caname,madesc,madtop,malstd,mastat,ISNULL(sum(tlchgv),0.00) as WIP,
(select isnull(sum(blcost),0.00) from blfile where blclin = maclin and blmatn = mamatn)
as billed,
isnull(rfhghq,0.00),isnull(rffixq,0.00),ISNULL(rfdate,'17770101'),cmidst
from mafile,cafile,tlfile,rffile,cmfile where maclin=caclin and maclin*=tlclin
and mamatn*=tlmatn and
maclin*=rfclin and mamatn*=rfmatn and maclin=cmclin and tlstat='' and
maeact = 32 and maspca = 0
group by maclin,mamatn,caname,madesc,madtop,malstd,mastat,rfhghq,rffixq,rfdate,cmidst
order by caname,maclin,mamatn
Если я запускаю в SQL Server Management Studio, запрос выполняется за 1 секунду и возвращает 5190 строк.
Когда я запускаю точно такой же запрос из программы Visual Foxpro на рабочем столе ПК под управлением Windows XP через ODBC, запрос не возвращает ошибок, но ни одной строки!
Если я добавлю топ 5000 к запросу, он будет работать, но займет 5 минут. Если я поднимаю, чтобы выбрать топ 5200, он снова ничего не повторяет.
Используя ту же программу Visual Foxpro с SQL 2000, она работает нормально.
Самый странный. У кого-нибудь есть идеи относительно того, в чем может быть проблема?
1 ответ
Давайте посмотрим, даст ли современный синтаксис результаты, к которым вы стремитесь, не навсегда.
SELECT ma.maclin, ma.mamatn, ca.caname, ma.madesc, ma.madtop, ma.malstd,
WIP = COALESCE(SUM(tl.tlchgv), 0.00),
billed = COALESCE(SUM(bl.blcost), 0.00),
rfhghq = COALESCE(rf.rfhghq, 0.00),
rffixq = COALESCE(rf.rffizq, 0.00),
rfdate = COALESCE(rf.rfdate, '17770101'),
cm.cmidst
FROM dbo.mafile AS ma
INNER JOIN dbo.cafile AS ca
ON ma.maclin = ca.caclin
INNER JOIN dbo.cmfile AS cm
ON ma.maclin = cm.cmclin
LEFT OUTER JOIN dbo.tlfile AS tl
ON ma.maclin = tl.tlclin
AND ma.mamatn = tl.tlmatn
AND tl.tlstat = ''
LEFT OUTER JOIN dbo.rffile AS rf
ON ma.mamatn = rf.rfmatn
LEFT OUTER JOIN dbo.blfile AS bl
ON bl.blclin = ma.maclin
AND bl.blmatn = ma.mamatn
WHERE
ma.maeact = 32 AND ma.maspca = 0
GROUP BY
ma.maclin, ma.mamatn, ca.caname, ma.madesc, ma.madtop, ma.malstd,
COALESCE(rf.rfhghq, 0.00),
COALESCE(rf.rffizq, 0.00),
COALESCE(rf.rfdate, '17770101'),
cm.cmidst
ORDER BY ca.caname, ma.maclin, ma.mamatn;