Elementos Duplicados
Publicado por Alejandro (73 intervenciones) el 09/01/2020 15:04:53
Buenas tardes,
He creado el siguiente php y me funciona correctamente:
Pero aun poniendo la función DISTINCT hay registros que me saca duplicados.
De los duplicados solo me vale el que tiene mayor fecha (el dato está en una columna llamada ReclFecha en formato (2014-06-04 08:34:48.220)
He probado modificando el where tal que así:
Pero me da un error de EXPRESION NO BOLEANA.
¿A alguien se lo ocurre como puedo quitar los duplicados o como usar el valor de ReclFecha más reciente.
Saludos y gracias.
He creado el siguiente php y me funciona correctamente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
$serverName = "srvprincipal";
$connectionInfo = array( "Database"=>"GCOMB000", "UID"=>"UserPlanificacion", "PWD"=>"Albeniz2020");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
die( print_r( sqlsrv_errors(), true));
}
?>
<html>
<head>
<title>Ordenes de Trabajo</title>
<link rel="stylesheet" type="text/css" href="csstabla.css">
<?php
// Variable de declaración en segundos
$ActualizarDespuesDe = 60;
// Envíe un encabezado Refresh al navegador preferido.
header('Refresh: '.$ActualizarDespuesDe);
?>
</head>
<body>
<br>
<?php
$resultado=array(date("H:i"));
echo json_encode($resultado);
?>
<table border="1" >
<tr>
<td>Máquina</td>
<td>Orden</td>
<td>Linea</td>
<td>Cod.Artículo</td>
<td>Cantidad</td>
<td>Metros</td>
<td>Material 1</td>
<td>Material 2</td>
<td>Magnético</td>
<td>Troq.</td>
<td>Nº Colores</td>
<td>C1</td>
<td>C2</td>
<td>C3</td>
<td>C4</td>
<td>C5</td>
<td>C6</td>
<td>C7</td>
<td>C8</td>
<td>Tiempo</td>
<td>Estado</td>
</tr>
<?php
$sql = "SELECT DISTINCT ReclOrden, Mat2=Tec_Tip_stamp+Tec_Ava_stamp, Linea=VEstadoGoitek.OF_Lin, Tec_codigo, ReclMaquina, ReclLin, OF_Cod_Art, OF_Cantidad,OF_MT_Tirada, OF_Tipo_Papel, OF_Magnetico, OF_Cod_Troq, OF_Num_Tintas, OF_Color1, OF_Color2, OF_Color3, OF_Color4, OF_Color5, OF_Color6, OF_Color7, N_Orden=VEstadoGoitek.OF_N_Orden, OF_Color8, of_estado_dsc, OF_T_Tirada=Cast(Datepart(Hour,dateadd(n,OF_T_Tirada+25, '19000101')) as varchar(10))+':'+ Cast(Datepart(Minute,dateadd(n,OF_T_Tirada+25, '19000101')) as varchar (10)), convert(varchar(10), ReclFecFacbrica, 103)
FROM TReclamaciones,Ordenes,VEstadoGoitek, ARTITTEC
WHERE ReclLin = VEstadoGoitek.OF_Lin AND convert(varchar(10), ReclFecFacbrica, 103) = convert(varchar(10), getdate(),103) AND Ordenes.OF_N_Orden = VEstadoGoitek.OF_N_Orden AND ReclOrden = VEstadoGoitek.OF_N_Orden AND ReclMaquina= '03' AND of_estado_dsc = 'LANZADA' AND Tec_codigo = OF_Cod_Art";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
?>
<tr>
<td><?php echo $row['ReclMaquina'] ?></td>
<td><?php echo $row['N_Orden'] ?></td>
<td><?php echo $row['Linea'] ?></td>
<td><?php echo $row['OF_Cod_Art'] ?></td>
<td><?php echo $row['OF_Cantidad'] ?></td>
<td><?php echo $row['OF_MT_Tirada'] ?></td>
<td><?php echo $row['OF_Tipo_Papel'] ?></td>
<td><?php echo $row['Mat2'] ?></td>
<td><?php echo $row['OF_Magnetico'] ?></td>
<td><?php echo $row['OF_Cod_Troq'] ?></td>
<td><?php echo $row['OF_Num_Tintas'] ?></td>
<td><?php echo $row['OF_Color1'] ?></td>
<td><?php echo $row['OF_Color2'] ?></td>
<td><?php echo $row['OF_Color3'] ?></td>
<td><?php echo $row['OF_Color4'] ?></td>
<td><?php echo $row['OF_Color5'] ?></td>
<td><?php echo $row['OF_Color6'] ?></td>
<td><?php echo $row['OF_Color7'] ?></td>
<td><?php echo $row['OF_Color8'] ?></td>
<td><?php echo $row['OF_T_Tirada'] ?></td>
<td><?php echo $row['of_estado_dsc'] ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
Pero aun poniendo la función DISTINCT hay registros que me saca duplicados.
De los duplicados solo me vale el que tiene mayor fecha (el dato está en una columna llamada ReclFecha en formato (2014-06-04 08:34:48.220)
He probado modificando el where tal que así:
1
2
3
4
"SELECT DISTINCT ReclOrden, Mat2=Tec_Tip_stamp+Tec_Ava_stamp, Linea=VEstadoGoitek.OF_Lin, Tec_codigo, ReclMaquina, ReclLin, OF_Cod_Art, OF_Cantidad,OF_MT_Tirada, OF_Tipo_Papel, OF_Magnetico, OF_Cod_Troq, OF_Num_Tintas, OF_Color1, OF_Color2, OF_Color3, OF_Color4, OF_Color5, OF_Color6, OF_Color7, N_Orden=VEstadoGoitek.OF_N_Orden, OF_Color8, of_estado_dsc, OF_T_Tirada=Cast(Datepart(Hour,dateadd(n,OF_T_Tirada+25, '19000101')) as varchar(10))+':'+ Cast(Datepart(Minute,dateadd(n,OF_T_Tirada+25, '19000101')) as varchar (10)), convert(varchar(10), ReclFecFacbrica, 103)
FROM TReclamaciones,Ordenes,VEstadoGoitek, ARTITTEC
WHERE ReclLin = VEstadoGoitek.OF_Lin AND convert(varchar(10), ReclFecFacbrica, 103) = convert(varchar(10), getdate(),103) AND Ordenes.OF_N_Orden = VEstadoGoitek.OF_N_Orden AND ReclOrden = VEstadoGoitek.OF_N_Orden AND ReclMaquina= '03' AND of_estado_dsc = 'LANZADA' AND Tec_codigo = OF_Cod_Art AND MAX (ReclFecha)";
Pero me da un error de EXPRESION NO BOLEANA.
¿A alguien se lo ocurre como puedo quitar los duplicados o como usar el valor de ReclFecha más reciente.
Saludos y gracias.
Valora esta pregunta


0