Выполняю два запроса и получаю странный результат. Я хотел бы знать, почему это происходит.
Теперь запросы:Противоречивый результат запроса Oracle
SELECT * FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.a = b.a (+)
AND b.c = c.c
AND a.a = 123;
Результат пуст.
SELECT COUNT(*) FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.a = b.a (+)
AND b.c = c.c
AND a.a = 123;
Результат 1.
Это действительно тот же запрос с различным возвращаемым значением.
Таблица A содержит строку с полем 'a' = 123.
Таблица B не содержит строк как a.a = b.a.
Как можно вернуть ничего или 1 для одного и того же запроса?
Update:
Когда я делаю это так
SELECT COUNT(*) FROM TABLE_A a, TABLE_B b, TABLE_C c
WHERE a.a = b.a (+)
AND b.c = c.c (+)
AND a.a = 123;
Он работает нормально.
Измените свой запрос с помощью синтаксиса ANSI-92 ('LEFT JOIN' и т. Д.), А затем попробуйте. Мне 20 лет, я думаю, что настало время спать! – MatBailie
Как насчет 'TABLE_C'? что в нем? – gdoron
@Dems. Черт, мне жаль, что я не мог +1 больше одного раза ... –