Показать сообщение отдельно
Старый 14.01.2009, 17:24   #12  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Lemming Посмотреть сообщение
У меня отработало аналогично джобу из оригинального поста. В общем, в любом раскладе, судя по такой неустойчивости к версиям и СУБД, лучше не забавляться с такими связками в реальных проектах.
Да, это точно!

Ещё прикол:
X++:
     i = 0;

    while select ledgerTableTmp
    join ledgerTrans
        where ledgerTrans.AccountNum == ledgerTableTmp.AccountNum
    {
        info('1:' + ledgerTrans.AccountNum);
        i++;

        if (transCnt && i == transCnt)
            break;
    }

    i = 0;

    while select ledgerTrans
    join ledgerTableTmp
        where ledgerTrans.AccountNum == ledgerTableTmp.AccountNum
    {
        info('2:' + ledgerTrans.AccountNum);
        i++;

        if (transCnt && i == transCnt)
            break;
    }

    i = 0;

    while select ledgerTableTmp
    join ledgerTrans
        where ledgerTrans.AccountNum == ledgerTableTmp.AccountNum
    {
        info('3:' + ledgerTrans.AccountNum);
        i++;

        if (transCnt && i == transCnt)
            break;
    }
1 и 3 - одинаковые.

При этом 1 посылает к СУБД запрос (гы ) следующего вида:
PHP код:
SELECT ...FROM LEDGERTRANS A WHERE ((SUBSTR(NLS_LOWER(DATAAREAID),1,3)=NLS_LOWER(:in1)/*'mil'*/) AND (SUBSTR(NLS_LOWER(ACCOUNTNUM),1,10)=SUBSTR(NLS_LOWER(ACCOUNTNUM),1,10))) 
(т.е. на самом деле не совсем декартово произведение, а вообще просто выборка из LedgerTrans, без учёта нашей временной таблицы)
2 - делает нормальное декартово произведение
3 - не выполняется вообще (ни запроса, ни инфо)! (именно после выполнения 2, т.к. 1 - выполняется)
15 мин. голову ломал... бред какой-то...
__________________
Zhirenkov Vitaly