Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

obtener fila con posibles valores nulos

Estas en el tema de obtener fila con posibles valores nulos en el foro de Mysql en Foros del Web. Hola amigos, espero me puedan ayudar, Tengo una consulta que realiza diversas comparaciones en diversas tablas que me devuelve una determinada cantidad de filas. Pero ...
  #1 (permalink)  
Antiguo 19/05/2011, 21:35
 
Fecha de Ingreso: julio-2010
Ubicación: Chillan, Chile
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 1
Pregunta obtener fila con posibles valores nulos

Hola amigos, espero me puedan ayudar,
Tengo una consulta que realiza diversas comparaciones en diversas tablas que me devuelve una determinada cantidad de filas.
Pero existe una comparación cuenta.numero_cuenta=otras_deudas.id_cuenta que posiblemente no me devuelva valores pero sin embargo igual deseo capturar. NO se si esto es posible pero graficamente lo que quiero que me devuelva la consulta es lo siguiente.

...............campos..........
fila..N|A|N|D|S|V|C|D|M
1....X|X|X|X|X|X|X|X|X
2....X|X|X|X|X|X|X|X|0
3....X|X|X|X|X|X|X|X|0
4....X|X|X|X|X|X|X|X|X
5....X|X|X|X|X|X|X|X|X
0=valor nulo o falso

donde la fila 2 y 3 en la columna M devuelven valores nullos sin embargo igual deseo que sean devueltos en la consulta.
La consulta que tengo hasta el momento es la siguiente, la consulta es como deberia hacer la ultima comparacion para que me devuelva lo que antes les explique.


Código SQL:
Ver original
  1. SELECT nombres, apellidos, cuenta.numero_cuenta, cuenta.direccion,cuenta.subsidio,tarifas.subsidio,valor,consumo AS consumos, deuda AS deuda_anterior, otras_deudas.monto AS otras_deudas
  2. FROM `socio`, `cuenta`,`consumo`,`tarifas`,`deudas`,`otras_deudas`
  3. WHERE socio.numero_socio=cuenta.numero_socio
  4. AND cuenta.numero_cuenta=consumo.id_cuenta
  5. AND consumo.consumo=tarifas.metros
  6. AND cuenta.numero_cuenta=deudas.id_cuenta
  7. AND cuenta.numero_cuenta=otras_deudas.id_cuenta
  #2 (permalink)  
Antiguo 20/05/2011, 04:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: obtener fila con posibles valores nulos

Manual

13.2.7.1. Sintaxis de JOIN


Código MySQL:
Ver original
  1. SELECT nombres,
  2.              apellidos,
  3.              cuenta.numero_cuenta,
  4.              cuenta.direccion,
  5.              cuenta.subsidio,
  6.              tarifas.subsidio,
  7.              valor,
  8.              consumo AS consumos,
  9.              deuda AS deuda_anterior,
  10.              otras_deudas.monto AS otras_deudas
  11. FROM `socio` LEFT JOIN `cuenta`
  12.                            ON socio.numero_socio=cuenta.numero_socio
  13.                        LEFT JOIN`consumo`
  14.                            ON cuenta.numero_cuenta=consumo.id_cuenta
  15.                        LEFT JOIN `tarifas`
  16.                            ON consumo.consumo=tarifas.metros
  17.                        LEFT JOIN `deudas`
  18.                            ON cuenta.numero_cuenta=deudas.id_cuenta
  19.                        LEFT JOIN `otras_deudas`
  20.                            ON cuenta.numero_cuenta=otras_deudas.id_cuenta;

Lee el maual y donde puedas usar INNER JOIN no uses los otros...

IFNULL(expr1,expr2)



12.2. Funciones de control de flujo
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 20/05/2011, 09:01
 
Fecha de Ingreso: julio-2010
Ubicación: Chillan, Chile
Mensajes: 60
Antigüedad: 13 años, 8 meses
Puntos: 1
De acuerdo Respuesta: obtener fila con posibles valores nulos

Cita:
Iniciado por quimfv Ver Mensaje
Manual

[URL="http://dev.mysql.com/doc/refman/5.0/es/join.html"]13.2.7.1. Sintaxis de JOIN[/URL]


Código MySQL:
Ver original
  1. SELECT nombres,
  2.              apellidos,
  3.              cuenta.numero_cuenta,
  4.              cuenta.direccion,
  5.              cuenta.subsidio,
  6.              tarifas.subsidio,
  7.              valor,
  8.              consumo AS consumos,
  9.              deuda AS deuda_anterior,
  10.              otras_deudas.monto AS otras_deudas
  11. FROM `socio` LEFT JOIN `cuenta`
  12.                            ON socio.numero_socio=cuenta.numero_socio
  13.                        LEFT JOIN`consumo`
  14.                            ON cuenta.numero_cuenta=consumo.id_cuenta
  15.                        LEFT JOIN `tarifas`
  16.                            ON consumo.consumo=tarifas.metros
  17.                        LEFT JOIN `deudas`
  18.                            ON cuenta.numero_cuenta=deudas.id_cuenta
  19.                        LEFT JOIN `otras_deudas`
  20.                            ON cuenta.numero_cuenta=otras_deudas.id_cuenta;

Lee el maual y donde puedas usar INNER JOIN no uses los otros...

IFNULL(expr1,expr2)


[URL="http://dev.mysql.com/doc/refman/5.0/es/control-flow-functions.html"]
12.2. Funciones de control de flujo[/URL]


muchas gracias quimfv , hice uso del INNER JOIN como me dijiste y me filtro mejor aun,
era precisamente lo que buscaba, ademas agregue algunas clausuras en WHERE para filtrar mejor mi consulta.
el resultado es este por si alguien le sirve.
Código SQL:
Ver original
  1. SELECT nombres,
  2.              apellidos,
  3.              cuenta.numero_cuenta,
  4.              cuenta.direccion,
  5.              cuenta.subsidio,
  6.              tarifas.subsidio,
  7.              valor,
  8.              consumo AS consumos,
  9.              consumo.mes,  
  10.              deuda AS deuda_anterior,
  11.              otras_deudas.monto AS otras_deudas,
  12.              motivo
  13. FROM `socio` INNER JOIN `cuenta`
  14.                            ON socio.numero_socio=cuenta.numero_socio
  15.                        INNER JOIN`consumo`
  16.                            ON cuenta.numero_cuenta=consumo.id_cuenta
  17.                        INNER JOIN `tarifas`
  18.                            ON consumo.consumo=tarifas.metros
  19.                        INNER JOIN `deudas`
  20.                            ON cuenta.numero_cuenta=deudas.id_cuenta
  21.                        LEFT JOIN `otras_deudas`
  22.                            ON cuenta.numero_cuenta=otras_deudas.id_cuenta
  23. WHERE consumo.mes='6'
seguire estudiando pues me falta bastante que aprender de BD, muchas gracias.

Etiquetas: null, nulo, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:36.