MYSQL查询包括“表1”中的所有“表2”

时间:2011-12-07 15:04:23

标签: php mysql csv export

我有这个PHP将日期导出到csv文件:

$link = mysql_connect($host, $user, $pass) or die("No se pudo conectar." . mysql_error());
mysql_select_db($db) or die ("No se pudo conectar.");

$csv_output = "Creado el, Id de Ticket, Departamento, Tema de Ayuda, Prioridad, Nombre de Staff, Apellido de Staff, Nombre del cliente, Email del cliente, Asunto, Telefono, Extension, Estado de ticket, Direccion, Marca, Tienda, Lugar de Tienda, Codigo del PC, Fecha de compra, Factura, Documento, ID, Celular, Serie del Producto, Estado del Producto, Descripcion(PyP Defectuosa), Serie(PyP Defectuosa), Proveedor(PyP Defectuosa), Factura(PyP Defectuosa), Guia(PyP Defectuosa), Fecha(PyP Defectuosa), Garantía(PyP Defectuosa), Cantidad(PyP Defectuosa), Estado(PyP Defectuosa), Comentario(PyP Defectuosa), Usuario(PyP Defectuosa), Courier(PyP Defectuosa), N°Remito(PyP Defectuosa), Fecha de envio(PyP Defectuosa)";

$csv_output .= "\n";

$query = "(SELECT t1.created, t1.ticket_id, t3.dept_name, t1.helptopic, t1.priority_id, t2.firstname, t2.lastname, t1.name, t1.email, t1.subject, t1.phone, t1.phone_ext, t1.status, t1.address, t1.pcbrand, t1.storeLocation, t1.place, t1.pcCode, t1.purchaseDate, t1.invoice, t1.tipoid, t1.numId, t1.cell_phone, t1.nserieprod, t1.estprod, t4.ticket_id, t4.`desc` , t4.serial, t4.supplier, t4.invoice, t4.guide, t4.date, t4.warranty, t4.volume, t4.state, t4.comment, t4.user, t4.nomcourier, t4.nremito, t4.fenvio
FROM ticket AS t1, staff AS t2, department AS t3, prod_cambio AS t4
WHERE t2.dept_id = t3.dept_id
AND t1.staff_id = t2.staff_id
AND t1.ticket_id = t4.ticket_id

order by t1.ticket_id)";

$result = mysql_query($query);

if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_row($result)) {
for ($j = 0; $j < 39; $j++) {
if ($j <= 25){
$csv_output .= $row[$j]. " ,";  
}
$csv_output .= $row[$j]. " ,";
}
$csv_output .= "\n";
}
}
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;

我正在选择2个不同的表并尝试将它们转换为一个。 我的问题是:

Created:            Ticket_id (Table 1):      Dept_name:       Priority_id:            Firstname:              Ticket_id (Table 2): 
2011-11-23 10:04:33     2                    Soporte Lima             2                   Juan Carlos                  2
2011-11-23 10:28:55     3                    Soporte Lima             2                   Antonio Arturo               3
2011-11-23 10:42:07     4                    Soporte Lima             2                   Renzo                        4
2011-11-23 10:44:33     5                    Soporte Lima             2                   Renzo                        5
2011-11-23 10:44:33     5                    Soporte Lima             2                   Renzo                        5
2011-11-23 10:44:33     5                    Soporte Lima             2                   Renzo                        5
2011-11-23 11:00:58     6                    Soporte Lima             2                   Miguel                       6

如果你注意到“表1”每次“表2”中的Ticket_id与“表1”匹配时重复,我怎么能像thi那样打印一些东西:

Created:            Ticket_id (Table 1):      Dept_name:       Priority_id:            Firstname:              Ticket_id (Table 2): 
2011-11-23 10:04:33     2                    Soporte Lima             2                   Juan Carlos                  2
2011-11-23 10:28:55     3                    Soporte Lima             2                   Antonio Arturo               3
2011-11-23 10:42:07     4                    Soporte Lima             2                   Renzo                        4
2011-11-23 10:44:33     5                    Soporte Lima             2                   Renzo                        5
                                                                                                                       5
                                                                                                                       5
2011-11-23 11:00:58     6                    Soporte Lima             2                   Miguel                       6
重复时只显示“表1”部分的

空白区域,只打印“表2”列

我希望在“表1”结果中包含所有“表2”,但不重复“表”1列的信息而是放置空格并继续打印“表2”列。 有办法吗?

2 个答案:

答案 0 :(得分:0)

你试过SELECT DISTINCT吗?根据您的示例结果判断,只需添加一个不同的就可以消除重复的行。

答案 1 :(得分:0)

更改输出:

$last_ticket_id = 0;
while ($row = mysql_fetch_row($result)) {
    if ($last_ticket_id == $row[1]) { $print_data = false; } else { $print_data = true; }
    for ($j = 0; $j < 39; $j++) {
        // not understand this but i leav
        if ($j <= 25) { $csv_output .= $row[$j]. " ,"; }
        // check is leav empty or not
        if (!$print_data && in_array($j, array(0,1,2,3,4)) ) {
            $csv_output .= " ,";
        } else {
            $csv_output .= $row[$j]. " ,";
        }
    }
    $csv_output .= "\n";
    $last_ticket_id = $row[1];
}