PHP - Elementos Duplicados

 
Vista:
sin imagen de perfil
Val: 133
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

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:
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Elementos Duplicados

Publicado por Alejandro (838 intervenciones) el 10/01/2020 00:19:30
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Haz una subconsulta para la fecha

1
2
3
4
5
6
7
8
9
10
SELECT DISTINCT
   T1.id,
   (
      SELECT TOP 1
         T2.fecha
      FROM tabla AS T2
      WHERE T2.id=T1.id
      ORDER BY T2.fecha DESC
   ) AS fecha
FROM tabla AS T1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar