Por favor, ayuda con el máximo valor de unos registros repetidos ¿dos where?

Iniciado por bgnumis, 8 Noviembre 2015, 23:18 PM

0 Miembros y 1 Visitante están viendo este tema.

bgnumis

Hola,

Tengo una serie de valores repetidos, que selecciono por los que ha insertado el id usuario conectado ($clave)

Donde me lo "hace mal" es en que cuando hago el echo se va al primer registro y yo quisiera que se fuera al último (al que se supone que tiene la fecha más alta. pero que es un texto por eso hago la transformación). Poniendo el id_registro un max no me hace nada y con un max en las fechas tampoco.

En 
Código (php-brief) [Seleccionar]
WHERE c.delegadoDR='".$con2[0]."'    debería además coger de todos los registros donde delegadoDR es igual a con2 coger el que tenga un máximo id_registro que está en la tabla a.

¿Cómo y donde añadiría coge el valor más alto de la fecha STR_TO_DATE(a.fechavisita, '%d/%m/%Y') as date) o en su defecto en el id_registro.

¿Se pueden poner dos where? Lo intento con un and pero no lo consigo.

Código (php) [Seleccionar]


$bus=mysql_query("SELECT tx_username FROM tbl_users WHERE id_usuario=$clave ");
//echo mysql_num_rows($resultado); 

//


while($con2 = mysql_fetch_array($bus)){


$busqueda2=mysql_query("SELECT c.ofi, c.delegadoDR, a.fechavisita,a.id_usuario,  c.Oficina, c.nombrecorto, COUNT(IF(a.ofi and id_usuario=$clave,1,NULL)), max(a.id_registro)
FROM oficinas c left join  registrovisitas a
   
      ON a.ofi = c.ofi
 
 
WHERE c.delegadoDR='".$con2[0]."'




 
    GROUP BY a.ofi

  ORDER BY cast(STR_TO_DATE(a.fechavisita, '%d/%m/%Y') as date) DESC") ;
  //WHERE c.delegadoDR='".$con2[0]."' 
echo "<table width=500  border=1 align=left>"; //EMPIEZA A CREAR LA TABLA CON LOS ENCABEZADOS DE TABLA
echo "<tr>";//<tr> CREA UNA NUEVA FILA
echo "<td width=200>Oficina </td>";//<td> CREA NUEVA COLUMNA
echo "<td width=200>Nombre </td>";//<td> CREA NUEVA COLUMNA
echo "<td width=200>Dirección </td>";//<td> CREA NUEVA COLUMNA
echo "<td width=300>Fecha última visita</td>";
echo "<td width=300>Veces visitada</td>";
echo "</tr>";


while($consulta2 = mysql_fetch_array($busqueda2)){

echo "<tr>";
echo "<td>".$consulta2['0']."</td>";
echo "<td>".$consulta2['4']."</td>";
echo "<td>".$consulta2['5']."</td>";
echo "<td>".$consulta2['2']."</td>";
echo "<td>".$consulta2['6']."</td>";
echo "</tr>";
}

}





bgnumis

Hola creó que el problema se solucionaría poniendo en el el where

And Max(STR_TO_DATE(STR_TO_DATE(a.fechavisita, '%d/%m/%Y') as date) o en su defecto en el id_registro.) pero no me funciona. ¿Donde puede estar el error?.

Una ayudita por favor jjj a ver si alguien. Me ayuda venga.

0roch1

Mi sugerencia por ahora es que muestres la consulta y ejecútalo en la consola para ver que efectivamente es lo que necesitas.

Código (php-brief) [Seleccionar]

$query_users = "SELECT tx_username FROM tbl_users WHERE id_usuario=$clave ";
echo $query_users."<br>";
$bus=mysql_query($query_users);



Código (php-brief) [Seleccionar]

while($con2 = mysql_fetch_array($bus)){

$query_busqueda = "SELECT c.ofi, c.delegadoDR, a.fechavisita,a.id_usuario,  c.Oficina, c.nombrecorto, COUNT(IF(a.ofi and id_usuario=$clave,1,NULL)), max(a.id_registro)
FROM oficinas c left join  registrovisitas a......"; //Organiza este query

echo $query_busqueda;

$busqueda2=mysql_query( $query_busqueda);


Por ahora es en lo que te puedo ayudar. Si me da tiempo más tarde lo reviso.

bgnumis

Nada no lo consigo... :(

A ver si sé explicar el problema:

Tengo un listado de Centros (tabla "oficinas"), el campo númerico que define a la oficina es "ofi" y cada oficina tiene un empleado "delegadoDR" asignado a revisar.

Una tabla users, donde está el id_usuario  y un campo "delegadoDR" (que es un texto con el nombre).

$clave es el usuario conectado y es un número de los posible valores de id_usuario.

Luego tengo otra tabla de revisión de centros que llamo "registrovisitas". Aquí, hay una campo "ofi" que es común al anterior, un campo "fecha" (que es un campo texto, dd/mm/aaa) y un "id_usuario".

Lo que yo quiero es sacar un listado con todos los registros de la tabla oficinas, donde el delegadoDR sea igual del usuario conectado y que por cada una de ellas vaya a "registrodevistas" y me diga la fecha última visita (si la ha visitado varias veces, debería dar el máximo valor de fecha) y el número de veces visitada. Si no aparece ninguna visita la fila de esa ofi aparecería en blanco en los campos de fecha y veces visitada.

A ver si me podeis ayudar.





bgnumis

Ya lo he solucionado chicos, era el orden...odio php y mysql jejejej