02.04.2008, 23:40
|
#9
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Цитата:
Сообщение от Didukh84
SELECT ... FROM InventTrans ... EXISTS JOIN * FROM InventJournalTable WHERE InventTrans.TransRefId = InventJournalTable.JournalId
проблема в следующем: без "EXISTS JOIN" он работает нормально, а ним не очень  (вернее совсем не работает).
Был аналогичный косяк, правда, на Oracle с его NSL_LOWER(), SUBSTR() и прочими функциями. В частности, при работе с Oracle из строковых полей вырезаются подстроки длины EDT. Так вот, пытался я join'ить по InventTrans.TransRefId = InventJournalTable.JournalId, и тоже ничего не работало; дело оказалось в том, что у EDT JournalId и InventTransRefId разная длина, в результате на СУБД уходил запрос вида
PHP код:
WHERE SUBSTR(NLS_LOWER(A.TransRefId),1,20)=SUBSTR(NLS_LOWER(B.JournalId),1,10)
Разумеется, такое условие никогда не выполняется, так что запрос пришлось переделывать. С другой стороны, на Ms SQL вроде такие "изыски" не используются, но в любом случае, включите трассировку и посмотрите, какой именно запрос уходит на СУБД.
|
|