SQL - Datos NULL Con Where

 
Vista:
sin imagen de perfil

Datos NULL Con Where

Publicado por Daniel (5 intervenciones) el 02/03/2017 18:00:07
Buenas tardes Amigos
Tengo un problema existencial con una consulta a una base de datos
Adjunto Consulta:

SELECT DISTINCTROW c.Rut_F FROM clientes c
LEFT JOIN otrabajo b on c.RUT_C = b.Rut_C
LEFT JOIN factura f on f.Cod_Ot = b.Cod_Ot
LEFT JOIN pasocuentasf p on p.Num_Fac = f.Num_fac

Adjunto Modelado:
mrn81

el problema es el siguiente, al momento de ejecutar la consulta la base de datos muestra 6 RUT diferentes pero poner la clausula " WHERE f.Estado = 'E' " los datos cambian a 2 con uno NULL, sera problema de alguna tabla por la cual no muestra los datos?

Toda ayuda es bien recibida <3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Datos NULL Con Where

Publicado por leonardo_josue (1173 intervenciones) el 02/03/2017 22:47:14
Hola Daniel:

No entiendo muy bien cuál es tu problema... creo que es conveniente que nos digas qué información tienes en cada una de tus tablas y a partir de esa información, que nos digas qué es lo que estás esperando como resultado.

Ahora bien, en realidad no veo nada malo en el comportamiento que mencionas, es decir, si la primer consulta (donde no pones un WHERE) te regresa 6 registros, esto no quiere decir que al ponerla de deba seguir regresando el mismo número de registros... creo que lo que tienes que analizar más bien son tus datos, más que tu consulta.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Datos NULL Con Where

Publicado por Daniel (5 intervenciones) el 03/03/2017 15:00:18
Muchisimas gracias leo por responder, te detallare el problema.

Necesito acceder a 9 datos de las tablas: Rut, Dv, Razon Social, Numero Factura, Fecha Emision, Fecha Vencimiento, Acobrar, Cancelado, la resta de Acobrar Con Cancelado Cuando las facturas esten emitidas y el rut del funcionario de clientes sea "x", La consulta quedaria asi:

SELECT CONCAT(c.RUT_C,'-',c.DV) as rut, c.Raz_Social, f.Num_fac, f.Fec_Emi, f.Fec_Ven, ROUND(f.ACobrar,0) as monto, ROUND(p.Cancelado,0) as abono, (ROUND(f.ACobrar,0) - ROUND(p.Cancelado,0)) as saldo FROM clientes c
LEFT JOIN otrabajo b on c.RUT_C = b.Rut_C
LEFT JOIN factura f on f.Cod_Ot = b.Cod_Ot
LEFT JOIN pasocuentasf p on p.Num_Fac = f.Num_fac
/*WHERE f.Estado = 'E' AND c.Rut_F = 1
ORDER BY c.Raz_Social, f.Num_fac ASC*/

Ejecutando asi la consulta me devuelve los datos de "abono" y "saldo" como NULL , entre otros. (sin el comentario)
213kppc

Pero al poner la clausula " WHERE f.Estado = 'E' " (Cuando las facturas esten Emitidas) me devuelven los valores "abono" y "saldo"
con sus respectivos valores.
1zokdw8

Aqui es donde tengo el problema, cuando termino el "WHERE" con el rut " WHERE f.Estado = 'E' AND c.Rut_F = 1 " no me devuelve ningun valor, la consulta sin el WHERE haciendo " DISTINCTROW c.RUT_F " me muestra el rut 1, pero al ver poner " WHERE f.Estado = 'E' " no lo muestra, aqui esta cuando ejecuto el "WHERE" con el rut pero sin el estado de la factura


2zrkg0p

Agradesco mucho tu ayuda, espero poder responderte lo ma rapido que pueda
Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Datos NULL Con Where

Publicado por leonardo_josue (1173 intervenciones) el 03/03/2017 17:25:37
Hola de nuevo Daniel:

Si al poner una condición WHERE no te muestra resultados la consulta, eso quiere decir simplemente que no hay información que cumplan con esa condición que estás colocando. Esto lo puedes visualizar haciendo un SELECT * para que te muestren todos los campos SIN LA CONDICION. Una vez que hagas esto, observa los campos que estás colocando en el WHERE y estoy seguro que ninguno tendrá la combinación de valores que estás colocando.

Esto puede pasar dado que estás utilizando LEFT JOIN, debes tener cuidado con los WHERE, ya que si pones sólo una condición de igualación (f.Estado = 'E') estás haciendo MANDATORIA la unión, es decir, que debe existir en ambas tablas lo que sería lo mismo a utilizar INNER JOIN's...

Haz las consultas por partes y estoy seguro que te darás cuenta de que no hay registros que cumplan con tu condición.

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Datos NULL Con Where

Publicado por Daniel (5 intervenciones) el 08/03/2017 13:18:48
Estimado Leo.

Acabo de terminar el sistema en el cual utilice tu ayuda. Tenias razón, al hacer las consultas por parte me di cuenta que no habían datos que cumplían la condición para el WHERE, el estado de las facturas de las OT de clientes de "1" eran diferentes, el estado de las facturas de ese rut eran 'C' (C = Cancelado, E = Emitido, A = Anulado). Gracias por tu util ayuda, ahora puedo entender mejor las consultas a la base de datos, aunque el problema era un poco obvio, jajajajaja.

Espero que cuando tenga otra duda referente al tema, hayan mas personas como tu con la disposicion a ayudar, espero algun dia poder devolverte la mano.

Exito en todo
Daniel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar