Realizo dos consultas y obtengo un resultado extraño. Me gustaría saber por qué sucede esto.
Ahora consultas:Resultado de la consulta Oracle contradictorio
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;
El resultado está vacía.
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;
El resultado es 1.
Realmente es la misma consulta con diferente valor devuelto.
La tabla A contiene una fila con el campo 'a' = 123.
La tabla B no contiene filas como a.a = b.a.
¿Cómo se puede devolver nada o 1 para la misma consulta?
Actualización:
Cuando hago esta manera
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;
Funciona bien.
Modifique su consulta utilizando la sintaxis ANSI-92 ('LEFT JOIN', etc.), y luego pruébelo. ¡Tiene 20 años, creo que ha tenido tiempo de dormir! – MatBailie
¿Qué pasa con 'TABLE_C'? ¿Que hay en ello? – gdoron
@Dems. Maldición, desearía poder +1 más de una vez a veces ... –