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
necesito que quede como en esta imagen, 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.
en mi consulta sql uso el left join y la muestra de datos es casi como la necesito pero no falta un poco
Código MySQL:
Ver original
este es mi PHP que genera el csv
Código PHP:
Ver original
<?php // Emular register_globals on $_FILES, $_COOKIE, $_POST, $_GET); } foreach ($superglobales as $superglobal) { } } if($_SESSION['est']!='1'){ } include('../mysql.php'); $periodo = $_GET['p']; $tipo = $_GET['t']; $file=$hora_actual.'-'.$periodo.'.csv'; //header to give the order to the browser $RZ_SOC = 'Razón Social'; //select table to export the data $usuario =$_GET['u']; $select_table= $db->consulta("SELECT d.ID AS 'ID', d.USUARIO AS 'CLIENTE', d.COMPRA_VENTA AS 'Compra Venta', IF(d.MNT_IVA>0,MNT_IVA,null) AS 'Monto IVA (Recuperable)', n.COD_IVA_NO_REC AS 'Codigo IVA no Rec', n.MNT_IVA_NO_REC AS 'Monto IVA no Rec', d.MNT_TOTAL AS 'Monto Total', o.COD_IMP AS 'Codigo otro impuesto', o.TASA_IMP AS 'Tasa otro impuesto', o.MNT_IMP AS 'Monto otro impuesto' FROM datos d LEFT JOIN no_recuperable n ON d.ID = n.ID_DATOS LEFT JOIN otro_impuesto o ON d.ID = o.ID_DATOS WHERE USUARIO='".$usuario."' AND COMPRA_VENTA='".$tipo."' AND PERIODO='".$periodo."' ORDER BY ID" ); $rows = $db->fetch_assoc($select_table); if ($rows) { } while($rows) { getcsv($rows); $rows = $db->fetch_assoc($select_table); } // get total number of fields present in the database function getcsv($no_of_field_names) { $separate = ';'; // realizar la acción de todos los nombres de campo como nombre de campo foreach ($no_of_field_names as $field_name) { { } echo $field_name.$separate ; //separar con punto y coma $separate = ';'; } //make new row and line echo "\r\n"; } //} ?>
este es el resultado es similar pero en el excel de arriba es como lo necesito realmente
Espero entiendan mi problema y me ayuden que llevo varios días intentándolo y no me resulta.