Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2016, 22:12
Avatar de enzone_10
enzone_10
 
Fecha de Ingreso: abril-2016
Mensajes: 4
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Mostrar datos de 3 tablas

Hola es mi primer post en el foro tengo grandes expectativas de que puedan ayudarme con esta duda que me tiene un poco loco de hace unos días y que no he podido resolver

bueno este es el problema, necesito crear un archivo csv para subir posterior poder subir una carga masiva de datos a una pagina x, esta pagina tiene normas para crear el archivo en casos especiales que seria cuando hay otro impuesto o mas de 1 iva no recuperable entonces tengo que unir 3 tablas una contiene la mayoria de datos de nombre "datos" y las otras 2 iva_no recuperable y otro impuesto.


Código:
tabla datos 
ID   | USUARIO     | COMPRA_VENTA         | MNT_IVA   | MNT_TOTAL  |  PERIODO
54   |    5        |        Compra        |  1900     |   10000   |    '04-2016'
55   |    5        |        Compra        |  2666     |   25000   |    '04-2016'
56   |    5        |        Compra        |  2566     |   24580   |    '04-2016'
57   |    5        |        Compra        |  300      |   15000   |    '04-2016'
58   |    5        |        Compra        |  4500     |   40360   |    '04-2016'
59   |    5        |        Compra        |  3000     |   17000   |    '04-2016'

Código:
tabla iva_no_recuperable
ID   | ID_DATOS    | COD_IVA_NO_REC       | MNT_IVA_NO_REC  
1   |    25        |          2           |  1900     
2   |    38        |          4           |  2666     
3   |    58        |          3           |  11111    
4   |    59        |          4           |  333     
5   |    59        |          3           |  444
Código:
tabla otro_impuesto
ID   | ID_DATOS  |         COD_IMP         | TASA_IMP    | MNT_IMP  
1   |    3         |          23           |  15         |   100
2   |    5         |          25           |  1.5        |   150
3   |    6        |          20           |  15         |   900
4   |    7        |          28           |  1.93       |   800
5   |    58        |          29           |  15          |   4444
6   |    58        |          51           |  1.93        |   5555

Esta es la consulta que estoy haciendo para extraer los datos

Código MySQL:
Ver original
  1. SELECT d.ID AS 'ID',
  2. d.USUARIO AS 'CLIENTE',
  3. d.COMPRA_VENTA AS 'Compra Venta',
  4. IF(d.MNT_IVA>0,MNT_IVA,null) AS 'Monto IVA (Recuperable)',
  5. n.COD_IVA_NO_REC AS 'Codigo IVA no Rec',
  6. n.MNT_IVA_NO_REC AS 'Monto IVA no Rec',
  7. d.MNT_TOTAL AS 'Monto Total',
  8. o.COD_IMP AS 'Codigo otro impuesto',
  9. o.TASA_IMP AS 'Tasa otro impuesto',
  10. o.MNT_IMP AS 'Monto otro impuesto'
  11. FROM datos d
  12. INNER JOIN no_recuperable n ON   d.ID = n.ID_DATOS
  13. INNER JOIN otro_impuesto  o ON   d.ID = o.ID_DATOS
  14. WHERE USUARIO=5 AND COMPRA_VENTA='Compra' AND PERIODO='04-2016'

el problema es que me genera solo la fila que coincide con los id y no me sirve



necesito que en el caso de haber 1 iva no_recuperable lo muestre en su fila correspondiente pero si hay mas de uno que repita los datos comunes de la tabla datos y se agregue el código del iva no recuperable y el monto en una nueva fila, es exactamente lo mismo cuando hay 1 o mas otro_impuesto.




Espero entiendan mi problema y me ayuden que llevo varios días intentándolo y no me resulta.

cambie el inner join por el left join y a mejorado un poco la muestra de datos pero no es el resultado final que espero
Código MySQL:
Ver original
  1. SELECT d.ID AS 'ID',
  2. d.USUARIO AS 'CLIENTE',
  3. d.COMPRA_VENTA AS 'Compra Venta',
  4. IF(d.MNT_IVA>0,MNT_IVA,null) AS 'Monto IVA (Recuperable)',
  5. n.COD_IVA_NO_REC AS 'Codigo IVA no Rec',
  6. n.MNT_IVA_NO_REC AS 'Monto IVA no Rec',
  7. d.MNT_TOTAL AS 'Monto Total',
  8. o.COD_IMP AS 'Codigo otro impuesto',
  9. o.TASA_IMP AS 'Tasa otro impuesto',
  10. o.MNT_IMP AS 'Monto otro impuesto'
  11. FROM datos d
  12. LEFT JOIN no_recuperable n ON   d.ID = n.ID_DATOS
  13. LEFT JOIN otro_impuesto  o ON   d.ID = o.ID_DATOS
  14. WHERE USUARIO=5 AND COMPRA_VENTA='Compra' AND PERIODO='04-2016'

este es el resultado

Última edición por enzone_10; 19/04/2016 a las 23:01