![]() |
#1 |
Участник
|
![]()
Добрый день!
Есть запрос: SELECT ItemId, DatePhysical, TransType, TransRefId, StatusReceipt, StatusIssue, Qty, CostAmountPhysical, CostAmountPosted, CostAmountAdjustment FROM InventTrans WHERE ((ItemId = 0234530500)) AND ((DateFinancial>=14.01.08 AND DateFinancial<=16.01.08)) AND ((TransRefId = 139233)) JOIN configId, InventLocationId, InventGtdId_RU, inventBatchId FROM InventDim WHERE InventTrans.inventDimId = InventDim.inventDimId AND ((InventLocationId = 261_ГП11)) JOIN ItemId FROM InventTable WHERE InventTrans.ItemId = InventTable.ItemId EXISTS JOIN * FROM InventJournalTable WHERE InventTrans.TransRefId = InventJournalTable.JournalId проблема в следующем: без "EXISTS JOIN" он работает нормально, а ним не очень ![]() Может кто-то попробовать мне объяснить, что я упускаю? Огромное спасибо ![]() |
|
![]() |
#2 |
MCITP
|
Поясните что значит "вообще не работает". Просто чтоб не было недопонимания.
![]() Вы ж понимаете, что в переменной InventJournalTable в любом случае не будет данных? Или же всё-таки весь запрос вообще перестает выдавать данные? (тогда навскидку могу предположить проблемы с выравниваением (или размером выравнивания) данных в это записи в поле InventJournalTable.JournalId)
__________________
Zhirenkov Vitaly |
|
![]() |
#3 |
Участник
|
Цитата:
"вообще не работает".
![]() Цитата:
Или же всё-таки весь запрос вообще перестает выдавать данные?
![]() Цитата:
(или размером выравнивания) данных в это записи в поле InventJournalTable.JournalId
|
|
![]() |
#4 |
Участник
|
мда, забыл сказать приложение AX3SP3CU1, SQL2000 SP3.
|
|
![]() |
#5 |
MCITP
|
![]()
Ну это скорее экстроординарный случай, но и такое бывает.
Что я имел ввиду: Например поменяли размерность типа для поля InventJournalTable.JournalId с Х на Y. А т.к. у него стоит правое выравнивание, то слева все старые данные добиты пробелами до Х, а новые до Y. И ищется в этом селекте размером Y. И если ваша строка "старая" и "добита" до Х, то она не найдётся селектом. Ну и такие же проблемы могут возникнуть не только из-за изменения размера, а и из-за "внешнего вмешательства", тип например если извне строки неправильно вставляли и т.п.... Как-то вот так... Проверьте непосредственно в БД, что ваша строка лежит с правильными данными и выравниванием...
__________________
Zhirenkov Vitaly |
|
![]() |
#6 |
MCITP
|
![]()
ну точнее я описал скорее общую проблему...
а в вашем случае надо убедиться что обе записи (InventTrans и InventJournalTable) в соответсвующих полях (transRefId и JournalId) имеют действительно строго одинаковые значения (с точностью до пробелов спереди). И ещё конечно же, надо чтоб они лежали в одной компании. ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#7 |
Участник
|
Цитата:
И ещё конечно же, надо чтоб они лежали в одной компании.
![]() ![]() |
|
![]() |
#8 |
Участник
|
Попробуйте переписать запрос след. образом
select * from inventTrans exists join * from InventJournalTable join * from InventTable join * from InventDim |
|
![]() |
#9 |
Участник
|
Цитата:
PHP код:
|
|
![]() |
#10 |
Участник
|
Цитата:
С другой стороны, на Ms SQL вроде такие "изыски" не используются, но в любом случае, включите трассировку и посмотрите, какой именно запрос уходит на СУБД.
![]() |
|
![]() |
#11 |
NavAx
|
Дело в вырвнивании
Помогите разобраться с QueryBuildDataSource Делайте запрос с использованием InventJournalTrans |
|
![]() |
#12 |
MCITP
|
![]()
Да, согласен, моя вышеизложенная теория к данному случаю отношения не имеет (но по жизни встречается
![]() Дело просто в разном размере полей, выровненных вправо. Цитата:
С другой стороны, на Ms SQL вроде такие "изыски" не используются,
нужно переписывать запрос (см. предыдущий пост raz)
__________________
Zhirenkov Vitaly |
|
![]() |
#13 |
Участник
|
kashperuk:
X++: select * from inventTrans exists join * from InventJournalTable join * from InventTable join * from InventDim __________________ ![]() |
|
![]() |
#14 |
Участник
|
Цитата:
Делайте запрос с использованием InventJournalTrans
|
|
Теги |
join, select |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|