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

Mostrar fila de 2 tablas

Estas en el tema de Mostrar fila de 2 tablas en el foro de Mysql en Foros del Web. Tengo la siguiente consulta para consultar NIMBRE de cliente y su COMPRA: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT c.nombre , a.compra FROM clientes c ...
  #1 (permalink)  
Antiguo 31/10/2014, 15:29
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Mostrar fila de 2 tablas

Tengo la siguiente consulta para consultar NIMBRE de cliente y su COMPRA:

Código MySQL:
Ver original
  1. SELECT c.nombre, a.compra
  2. FROM clientes c
  3. LEFT JOIN acum a on c.cliente = a.cliente

Cuando no existe la compra (en la segunda tabla), no muestra nada.
Deseo mostrar el registro e indicar que la compra es CERO
¿Como se debe formular esta consulta?

Muchas gracias anticipadas por alguna orientación.
  #2 (permalink)  
Antiguo 31/10/2014, 15:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar fila de 2 tablas

Cita:
Cuando no existe la compra (en la segunda tabla), no muestra nada.
Deseo mostrar el registro e indicar que la compra es CERO
LEFT JOIN devuelve NULL cuando la segunda tabla no está relacionada. Cero (0) no es NULL, y viceversa.
Además, como no hay funciones de agrupamiento, MySQL no genera un dato nuevo, como lo haría con COUNT(), SUM(), o cosas así.

Pero como estás recibiendo un NULL, puedes perfectamente controlar el resultado y poner cero:
Código MySQL:
Ver original
  1. SELECT c.nombre, IFNULL(a.compra, 0) compra
  2. FROM clientes c
  3.     LEFT JOIN acum a ON c.cliente = a.cliente
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 31/10/2014, 15:53
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Mostrar fila de 2 tablas

Cita:
Pero como estás recibiendo un NULL, puedes perfectamente controlar el resultado y poner cero:
Código MySQL:
Ver original
  1. SELECT c.nombre, IFNULL(a.compra, 0) compra
  2. FROM clientes c
  3.     LEFT JOIN acum a ON c.cliente = a.cliente
Muchas gracias, tu respuesta me será de mucha utilidad...

En realidad tengo varios campos que se suman, la había reducido a mínima expreción, hice mal mi planeamiento:

Esta es mi instrucción completa:

Código MySQL:
Ver original
  1. SELECT c.nombre, a.compra, (a.sub + a.iva + a.flete)
  2. FROM clientes c
  3. LEFT JOIN acum a on c.cliente = a.cliente
Disculpa, pero no veo como incluir el IFNULL dentro de la suma.
Gracias desde ahora
  #4 (permalink)  
Antiguo 31/10/2014, 15:55
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Mostrar fila de 2 tablas

¿debo incluir un solo IFNULL fuera de parentesis? o ¿por cada campo dentro de parentesis?
  #5 (permalink)  
Antiguo 31/10/2014, 16:01
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Mostrar fila de 2 tablas

Aqui veo un ejemplo:

Código MySQL:
Ver original
  1. SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
  2. FROM Products

Creo mi instruccion puede ser así:
Código MySQL:
Ver original
  1. SELECT c.nombre, a.compra, (IFNULL(a.sub,0) + IFNULL(a.iva,0) + IFNULL(a.flete,0) total
  2. FROM clientes c
  3.  
  4. ¿Es correcto?
  5. LEFT JOIN acum a on c.cliente = a.cliente
  #6 (permalink)  
Antiguo 31/10/2014, 16:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar fila de 2 tablas

Cita:
Iniciado por Bier Ver Mensaje
¿debo incluir un solo IFNULL fuera de parentesis? o ¿por cada campo dentro de parentesis?
Depende: SI existe coincidencia entre las tablas, pero alguno de los campos contiene un NULL, el resultado de esto: (a.sub + a.iva + a.flete) sería NULL.
Pero si siempre contiene al menos un cero, entonces sólo necesitas el IFNULL() exterior.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 31/10/2014, 16:09
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Mostrar fila de 2 tablas

hare las pruebas necesarias y consultar algo de literatura.
Muchas gracias, ha sido de gran utilidad.

Etiquetas: fila, join, registro, select, tabla, tablas
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 04:16.