Título: Mostrar la fecha más reciente
Publicado por: bgnumis en 7 Marzo 2017, 10:41 am
Hola a todos, A ver si me podéis ayudar en esta consulta, en un campo "buscar" yo obtengo los resultados con LIKE y los saco en una tabla: <?php $busca=""; $busca=$_GET['busca']; $conexion=mysql_connect("localhost","oscarugt","@duende109109109") or die("Problemas en la conexion"); mysql_select_db("ugtdef",$conexion) or die("Problemas en la selección de la base de datos"); if($busca!=""){ $busqueda=mysql_query("SELECT * FROM oficinas WHERE Oficina LIKE '%".$busca."%' OR direccion LIKE '%".$busca."%' OR Municipio LIKE '%".$busca."%' OR Provincia LIKE '%".$busca."%' OR ofi LIKE '%".$busca."%' OR delegadoDR LIKE '%".$busca."%'") ; ?> <table width="1054" border="1" align="left"> <tr> <td>Oficina</td> <td>Telefono</td> <td>ofi</td> <td>Dirección</td> <td>CP</td> <td>Municipio</td> <td>Provincia</td> <td>CCAA</td> <td>DDR</td> <td>Enlace a Ofi</td> <td>Registrar</td> </tr> <?php echo '<tr>'; echo '<td>'.$muestra['Oficina'].'</td>'; echo '<td>'.'<a href="tel:+'.$muestra['telefono'].'">'.$muestra['telefono'].'</a>'.'</td>'; echo '<td>'.$muestra['ofi'].'</td>'; echo '<td>'.$muestra['direccion'].'</td>'; echo '<td>'.$muestra['cp'].'</td>'; echo '<td>'.$muestra['Municipio'].'</td>'; echo '<td>'.$muestra['Provincia'].'</td>'; echo '<td>'.$muestra['CCAA'].'</td>'; echo '<td>'.$muestra['delegadoDR'].'</td>'; echo '<td><a href="oficinaaconsultartres.php?id='.$muestra['ofi'].'">','<strong>Ir a Oficina</strong>','</a></td>'; echo '<td><a href="principal.php?id='.$muestra['ofi'].'">','<strong>Ir a Registrar</strong>','</a></td>'; } } ?> </table>
La cuestión es tengo una segunda tabla llamada "registrovisitas" en esta tabla está el campo común "ofi" y "fechavisita", lo que me gustaría es sacar en la tabla anterior, por cada línea de la tabla, que cogiera el campo "ofi" de esa línea que me saca en el echo y me saque el max(cast(STR_TO_DATE(fechavisita, '%d/%m/%Y') as date)) pero no lo consigo ni a la de tres. ¿esto es posible? Muchas Gracias por adelantado.
Título: Re: Mostrar la fecha más reciente
Publicado por: bgnumis en 8 Marzo 2017, 08:04 am
¿Con un inner join o left join funcionaría aunque tenga un like?
De momento no lo he conseguido.
Título: Re: Mostrar la fecha más reciente
Publicado por: Hadess_inf en 8 Marzo 2017, 18:09 pm
Porque no hace un left join y agregas un max ¿? SELECT T1.*, TMP.fecha FROM T1 LEFT OUTER JOIN (SELECT T2.id_t1, MAX(T2.fecha) AS fecha FROM T2 GROUP BY id_t1) TMP ON ( T1.id = TMP.id_t1 ) WHERE T1.... /* condiciones */
Título: Re: Mostrar la fecha más reciente
Publicado por: bgnumis en 10 Marzo 2017, 10:01 am
Hola estoy intentando hacer el LEFT OUTER JOIN pero no hay manera, y leyendo sobre como montarlo no me aclaro SELECT P.cp, P.ofi FROM oficinas P LEFT OUTER JOIN (SELECT S.ofi , MAX(CAST(STR_TO_DATE(fechavisita, '%d/%m/%Y') AS S FROM registrovisitas ) ON P.ofi=S.ofi
Còmo se monta el LEFT join con el select, cuál es el orden? A ver si me podéis ayudar.
Título: Re: Mostrar la fecha más reciente
Publicado por: bgnumis en 10 Marzo 2017, 10:03 am
Intenté con esto pero tampo me iba $busca=""; $busca=$_GET['busca']; $conexion=mysql_connect("localhost","dddfst","ffff") or die("Problemas en la conexion"); if($busca!=""){ $busqueda=mysql_query("SELECT c.Oficina, c.telefono, c.ofi, c.direccion, c.cp, c.Municipio, c.Provincia,c.CCAA, c.delegadoDR , a.fechavisita, a.ofi, FROM oficinas c LEFT OUTER JOIN (SELECT a.ofi, max(cast(STR_TO_DATE(a.fechavisita, '%d/%m/%Y') AS date FROM registrovisitas a GROUP BY a.ofi) ON ( c.ofi = a.ofi ) WHERE c.Oficina LIKE '%".$busca."%' OR c.direccion LIKE '%".$busca."%' OR c.Municipio LIKE '%".$busca."%' OR c.Provincia LIKE '%".$busca."%' OR c.ofi LIKE '%".$busca."%' OR c.delegadoDR LIKE '%".$busca."%'") ; ?>
Y estoy intentando simplificar pero nada
Título: Re: Mostrar la fecha más reciente
Publicado por: bgnumis en 10 Marzo 2017, 14:22 pm
Hola, Creo que así debería funcionar, el problema que tengo es que al rodarlo no me aparecen los valores de la tabla con el echo. ¿dónde podría estar el error? <?php $busca=""; $busca=$_GET['busca']; $conexion=mysql_connect("localhost","osdsd","@dsfd") OR die("Problemas en la conexion"); mysql_select_db("dsddef",$conexion) OR die("Problemas en la selección de la base de datos"); IF($busca!=""){ $busqueda=mysql_query(" SELECT c.Oficina, c.telefono, c.ofi , a.fechavisita, a.ofi FROM oficinas c LEFT OUTER JOIN (SELECT registrovisitas.ofi AS A max(cast(STR_TO_DATE(registrovisitas.fechavisita, '%d/%m/%Y'))) AS date GROUP BY registrovisitas.ofi AS SL FROM registrovisitas ON (c.ofi=a.ofi) WHERE c.Oficina LIKE '%".$busca."%' OR c.ofi LIKE '%".$busca."%' )") ; ?> <table width="1054" border="1" align="left"> <tr> <td>Oficina</td> <td>Telefono</td> <td>ofi</td> <td>fecha</td> <td>Dirección</td> <td>CP</td> <td>Municipio</td> <td>Provincia</td> <td>CCAA</td> <td>DDR</td> <td>Enlace a Ofi</td> <td>Registrar</td> </tr> <?php while($muestra=@mysql_fetch_array($busqueda)){ echo '<tr>'; echo '<td>'.$muestra['1'].'</td>'; echo '<td>'.$muestra['ofi'].'</td>'; echo '<td>'.$muestra['3'].'</td>'; echo '<td><a href="oficinaaconsultartres.php?id='.$muestra['ofi'].'">','<strong>Ir a Oficina</strong>','</a></td>'; echo '<td><a href="principal.php?id='.$muestra['ofi'].'">','<strong>Ir a Registrar</strong>','</a></td>'; } } ?> </table>
Título: Re: Mostrar la fecha más reciente
Publicado por: Hadess_inf en 10 Marzo 2017, 15:53 pm
Tu consulta esta toda desordenada, ahí esta tu error, el group by esta antes del from ... etc ...
Saludos.
Título: Re: Mostrar la fecha más reciente
Publicado por: bgnumis en 10 Marzo 2017, 22:33 pm
Muchas. Estoy bloqueado con esto. Me he comprado [W._Jason_Gilmore]_Beginning_PHP_and_MySQL. Te digo esto porque quiero aprender.
Lo intento, de verdad, pero podrías ayudarme con el orden, no consigo que ruede
Título: Re: Mostrar la fecha más reciente
Publicado por: bgnumis en 11 Marzo 2017, 12:12 pm
No me funciona aún, pero después de leer mil. Creo que ya lo entiendo. Ozu, Cuando lo consiga lo pongo
|