Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: bgnumis en 7 Marzo 2017, 10:41 am



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:


Código
  1.  
  2. <?php
  3.  
  4. $busca="";
  5. $busca=$_GET['busca'];
  6. $conexion=mysql_connect("localhost","oscarugt","@duende109109109") or die("Problemas en la conexion");
  7. mysql_select_db("ugtdef",$conexion) or die("Problemas en la selección de la base de datos");  
  8.  
  9. if($busca!=""){
  10.  
  11. $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."%'") ;
  12.  
  13.  
  14.  
  15.  
  16. ?>
  17.  
  18.  
  19.  
  20.  
  21. <table width="1054"  border="1" align="left">
  22.  <tr>
  23.  
  24.    <td>Oficina</td>
  25.    <td>Telefono</td>
  26.    <td>ofi</td>
  27.  
  28.      <td>Direcci&oacute;n</td>
  29.        <td>CP</td>
  30.          <td>Municipio</td>
  31.            <td>Provincia</td>
  32.              <td>CCAA</td>
  33.               <td>DDR</td>
  34.               <td>Enlace a Ofi</td>
  35.               <td>Registrar</td>
  36.  
  37.  </tr>
  38.  
  39.  
  40.  <?php
  41.  
  42.  
  43.  
  44.  
  45.  while($muestra=@mysql_fetch_array($busqueda)){
  46.  echo '<tr>';
  47.  echo '<td>'.$muestra['Oficina'].'</td>';
  48.  
  49.  echo '<td>'.'<a href="tel:+'.$muestra['telefono'].'">'.$muestra['telefono'].'</a>'.'</td>';    
  50. echo '<td>'.$muestra['ofi'].'</td>';
  51.  
  52.     echo '<td>'.$muestra['direccion'].'</td>';
  53.   echo '<td>'.$muestra['cp'].'</td>';
  54.     echo '<td>'.$muestra['Municipio'].'</td>';
  55.   echo '<td>'.$muestra['Provincia'].'</td>';
  56.     echo '<td>'.$muestra['CCAA'].'</td>';
  57.      echo '<td>'.$muestra['delegadoDR'].'</td>';
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. echo '<td><a href="oficinaaconsultartres.php?id='.$muestra['ofi'].'">','<strong>Ir a Oficina</strong>','</a></td>';
  65.  
  66. echo '<td><a href="principal.php?id='.$muestra['ofi'].'">','<strong>Ir a Registrar</strong>','</a></td>';
  67.  
  68.  }
  69.    }
  70.  
  71.  
  72. ?>
  73.  
  74. </table>
  75.  
  76.  


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 ¿?

Código
  1. SELECT  T1.*, TMP.fecha
  2. 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 )
  3. 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

Código
  1.  
  2.  
  3. SELECT
  4.    P.cp, P.ofi
  5. FROM
  6.    oficinas P
  7.  
  8. LEFT OUTER JOIN (SELECT S.ofi , MAX(CAST(STR_TO_DATE(fechavisita, '%d/%m/%Y') AS S FROM registrovisitas )  
  9.  
  10. ON P.ofi=S.ofi
  11.  
  12.  
  13.  



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

Código
  1.  
  2.  
  3. $busca="";
  4. $busca=$_GET['busca'];
  5. $conexion=mysql_connect("localhost","dddfst","ffff") or die("Problemas en la conexion");
  6. mysql_select_db("fff",$conexion) or die("Problemas en la selección de la base de datos");  
  7.  
  8. if($busca!=""){
  9.  $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 )
  10.  
  11. 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."%'") ;
  12.  
  13.  
  14.  
  15.  
  16. ?>
  17.  
  18.  
  19.  


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?

Código
  1.  
  2.  
  3. <?php
  4.  
  5. $busca="";
  6. $busca=$_GET['busca'];
  7. $conexion=mysql_connect("localhost","osdsd","@dsfd") OR die("Problemas en la conexion");
  8. mysql_select_db("dsddef",$conexion) OR die("Problemas en la selección de la base de datos");  
  9.  
  10. IF($busca!=""){
  11.  $busqueda=mysql_query("
  12.  SELECT c.Oficina, c.telefono, c.ofi , a.fechavisita, a.ofi
  13.  
  14. FROM oficinas c  
  15.  
  16. LEFT OUTER JOIN
  17.  
  18. (SELECT registrovisitas.ofi AS A max(cast(STR_TO_DATE(registrovisitas.fechavisita, '%d/%m/%Y'))) AS date
  19.  
  20.  
  21. GROUP BY registrovisitas.ofi AS SL FROM registrovisitas
  22.  
  23.  
  24.                                          ON (c.ofi=a.ofi)
  25.  
  26.  
  27. WHERE c.Oficina LIKE '%".$busca."%' OR c.ofi LIKE '%".$busca."%' )") ;  
  28.  
  29. ?>
  30.  
  31.  
  32.  
  33.  
  34. <table width="1054"  border="1" align="left">
  35.  <tr>
  36.  
  37.    <td>Oficina</td>
  38.    <td>Telefono</td>
  39.    <td>ofi</td>
  40. <td>fecha</td>
  41.      <td>Direcci&oacute;n</td>
  42.        <td>CP</td>
  43.          <td>Municipio</td>
  44.            <td>Provincia</td>
  45.              <td>CCAA</td>
  46.               <td>DDR</td>
  47.               <td>Enlace a Ofi</td>
  48.               <td>Registrar</td>
  49.  
  50.  </tr>
  51.  
  52.  
  53.  <?php
  54.  
  55.  
  56.  
  57.  
  58.  while($muestra=@mysql_fetch_array($busqueda)){
  59.  echo '<tr>';
  60.  echo '<td>'.$muestra['1'].'</td>';
  61.  
  62.  
  63. echo '<td>'.$muestra['ofi'].'</td>';
  64. echo '<td>'.$muestra['3'].'</td>';
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72. echo '<td><a href="oficinaaconsultartres.php?id='.$muestra['ofi'].'">','<strong>Ir a Oficina</strong>','</a></td>';
  73.  
  74. echo '<td><a href="principal.php?id='.$muestra['ofi'].'">','<strong>Ir a Registrar</strong>','</a></td>';
  75.  
  76.  }
  77.    }
  78.  
  79.  
  80. ?>
  81.  
  82. </table>
  83.  
  84.  
  85.  
  86.  


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