Python & SQLite

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Old_Tuzik
Житель
Сообщения: 795
Зарегистрирован: 28 авг 2007, 16:38
Контактная информация:

Python & SQLite

Сообщение Old_Tuzik »

Что-то я недопонимаю, но может кто то уже сталкивался - один и тот же SQL запрос сделанный из разных мест возвращает различные результаты:

Код: Выделить всё

select 
T_CALLS.[FN], T_CALLS.[OP_TYPE], T_CALLS.[CALLER_A],T_CALLS.[CALLER_N], T_CALLS.[CALLEE_A],T_CALLS.[CALLEE_N],
T_REG_TYPE.[C_REN_NAME], T_DATA.[I_VALUE],T_DATA.[C_VALUE]

FROM T_CALLS

NATURAL JOIN T_CALLS
NATURAL JOIN T_DATA
NATURAL JOIN T_REG_TYPE
/*NATURAL JOIN T_OP_TYPE*/

WHERE (T_CALLS.[CALLEE_N] LIKE '%new%')
AND T_REG_TYPE.[I_REG_TYPE] = T_DATA.[I_REG_TYPE] 
AND T_CALLS.[OP_TYPE] = 2 /* ret */
AND (
    ((T_REG_TYPE.[C_REN_NAME] = 'arg_04') AND (T_DATA.[I_PAR_INDEX] = 1)) OR 
    ((T_REG_TYPE.[C_REN_NAME] = 'arg_00') AND (T_DATA.[I_PAR_INDEX] = 1)) OR 
    ((T_REG_TYPE.[C_REN_NAME] = 'EAX') AND (T_DATA.[I_PAR_INDEX] = 0)))
1) Запрос сделанный в SQLite Expert Personal возвращает все записи для (T_REG_TYPE.[C_REN_NAME] = 'EAX' и T_REG_TYPE.[C_REN_NAME] = 'arg_00';
2) Запрос сделанный в SQLite Manager (Firefox)Personal возвращает сначала все записи для (T_REG_TYPE.[C_REN_NAME] = 'EAX' а потом в каком то странном и неупорядоченном порядке T_REG_TYPE.[C_REN_NAME] = 'arg_00';
3) Запрос сделанный питоновском скриптике все записи для (T_REG_TYPE.[C_REN_NAME] = 'EAX' только!

Что происходит и почему результаты не идетичены?
Аватара пользователя
Old_Tuzik
Житель
Сообщения: 795
Зарегистрирован: 28 авг 2007, 16:38
Контактная информация:

Re: Python & SQLite

Сообщение Old_Tuzik »

ORDER BY T_CALLS.[FN] at the end of the query saved the father of russian democracy and made all results identical.
tasko
Графоман
Сообщения: 18705
Зарегистрирован: 20 июл 2003, 09:16
Откуда: Торонто

Re: Python & SQLite

Сообщение tasko »

Old_Tuzik писал(а):ORDER BY T_CALLS.[FN] at the end of the query saved the father of russian democracy and made all results identical.
Напомнило анекдот
Остановка. Подходит автобус. Интеллигентного вида человек пропускает всех вперед. Сам пытается зайти последним. И ему дверью придавливет шею. Автобус трогается.
— Б#$@! П$#@! Ё$#@$т! О$#@%#$!
Водитель тормозит, открывает дверь. Человек заходит в салон, поправляет галстук и обращается ко всем:
— Извините, погорячился, был напуган.
Ответить