• Sábado 21 de Diciembre de 2024, 17:18

Autor Tema:  Pregunta?????  (Leído 2418 veces)

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Pregunta?????
« en: Lunes 5 de Febrero de 2007, 16:06 »
0
Hola chicos de SoloCodigo, tengo una pregunta tal vez un poco crazy como yo, aunque creo que no es posible no se pierde nada con intentar.

Es posible que yo pueda saber con un select o algo parecido sobre un campo que se guarda en varias tablas (y cuando digo varias es varias), de una DB de unas 176 tablas, por que es que si me pongo a buscar tabla por tabla y revisar todos los campos para revisar si es el que necesito me muero de hambre.

Es posible???

Gracias Chao.
El pasado son solo recuerdos, el futuro son solo sueños

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pregunta?????
« Respuesta #1 en: Lunes 5 de Febrero de 2007, 17:09 »
0
Me muero de hambre tratando de entenderte  :)

¿Estás guardando el mismo dato (Mismo valor) en distintas tablas?

¿Me darías un ejemplo?
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Pregunta?????
« Respuesta #2 en: Lunes 5 de Febrero de 2007, 19:18 »
0
Ejemplo, ya por ahí JuanK me explico +/- como era,  pero él mismo dice que es un camello para un novato :( .

Ejemplo: Tengo una Factura No. 10167, este valor se guarda en tabla 1, tabla 2, tabla 3, tabla n, el nombre del campo es diferente en todas las tablas; que quiero yo hacer, saber donde está ese valor '10167' en las tablas de la DB, ya que este es guardado en no se que tablas (lo de tabla 1, tabla n es para dar ejemplo) y pos me queda dificil revisar más de 300 scripts :(
El pasado son solo recuerdos, el futuro son solo sueños

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Pregunta?????
« Respuesta #3 en: Lunes 5 de Febrero de 2007, 20:17 »
0
eso esta facil, mira realiza un script en php que busque de tu base de datos todas las tablas que tengan el campo que necesites luego que hagan el query sobre cada tabla y que imprima los resultados :) :kicking:

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pregunta?????
« Respuesta #4 en: Lunes 5 de Febrero de 2007, 21:59 »
0
Bueno. Tenía curiosidad así que lo resolví (Me costó mas de lo que creí que me costaría :ph34r: ).

Vergonzosamente no recuerdo como obtener el número y el nombre de los campos de una tabla así que usé describe. Si alguien me refresca la memoria se lo voy a agradecer.

Lo único que tenés que hacer es cambiar el nombre de las variables $valorABuscar y $base que vendría a ser la base de datos en donde buscar.

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Buscador de valores</title>
  </head>
  <body>
    <?php
      $valorABuscar="Favio";
      $base="bdforo";

      //DB--------------------------------------------------------------
      
      $link = mysql_connect("localhost", "root");
      mysql_select_db($base, $link);
      $sqlTxt = "select table_name from information_schema.tables where table_schema='$base'";  
      //echo $sqlTxt;
      $Tablas = mysql_query($sqlTxt, $link);

      //----------------------------------------------------------------
        
      $nroTablas=mysql_affected_rows($link);
      if(!$nroTablas){      
        mysql_close($link);
        echo "No hay tablas";
      }
      else{    
        while ($Tabla = mysql_fetch_row($Tablas)){
          $nombreTabla=$Tabla[0];  
          //echo $nombreTabla .":<br />";
          
          $sqlTxt = "describe $nombreTabla";
          $Campos = mysql_query($sqlTxt, $link);
    
          while ($Campo = mysql_fetch_row($Campos)){
            $nombreCampo=$Campo[0];
            //echo "----" . $nombreCampo . "<br  />";
            
            $sqlTxt = "select $nombreCampo from $nombreTabla where $nombreCampo = '$valorABuscar'";
            $resultado = mysql_query($sqlTxt, $link);
            $encontrado=mysql_affected_rows($link);
            if($encontrado){
              $registro = mysql_fetch_row($resultado);
              $valor = $registro[0];
              if($valor==$valorABuscar){
                echo "Valor encontrado en tabla: $nombreTabla, en campo: $nombreCampo<br />";
              }
            }
          }
        }
        mysql_close($link);
      }
    ?>
  </body>
</html><!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Espero que sea util.  :comp:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Pregunta?????
« Respuesta #5 en: Lunes 5 de Febrero de 2007, 23:33 »
0
Cita de: "ArKaNtOs"
eso esta facil, mira realiza un script en php que busque de tu base de datos todas las tablas que tengan el campo que necesites luego que hagan el query sobre cada tabla y que imprima los resultados :) :kicking:
El nombre del campo o el valor del campo; si es la primera ahí esta el problema, por que como digo en todas las tablas es diferente el nombre de ese campo.

Aunque ya lo solucione de una manera un poco más facil, pero sigo con la intriga de saber como hacerlo de esa manera.

PD. Angel_K_ido está muy bakno el script y funciona a la perfecc, pero sigo diciendo, no me se el nombre del campo.

NO TACHO, SIP ASI ES.
El pasado son solo recuerdos, el futuro son solo sueños

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pregunta?????
« Respuesta #6 en: Lunes 5 de Febrero de 2007, 23:56 »
0
Cita de: "RadicalEd"
Cita de: "ArKaNtOs"
eso esta facil, mira realiza un script en php que busque de tu base de datos todas las tablas que tengan el campo que necesites luego que hagan el query sobre cada tabla y que imprima los resultados :) :kicking:
El nombre del campo o el valor del campo; si es la primera ahí esta el problema, por que como digo en todas las tablas es diferente el nombre de ese campo.

Aunque ya lo solucione de una manera un poco más facil, pero sigo con la intriga de saber como hacerlo de esa manera.

PD. Angel_K_ido está muy bakno el script y funciona a la perfecc, pero sigo diciendo, no me se el nombre del campo.

NO TACHO, SIP ASI ES.
Ya no te entiendo otra vez.  :ph34r:
Citar
Ejemplo: Tengo una Factura No. 10167, este valor se guarda en tabla 1, tabla 2, tabla 3, tabla n, el nombre del campo es diferente en todas las tablas; que quiero yo hacer, saber donde está ese valor '10167' en las tablas de la DB, ya que este es guardado en no se que tablas
El código que te dí te dice en qué tablas y en qué campos está el valor que buscas !
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Pregunta?????
« Respuesta #7 en: Martes 6 de Febrero de 2007, 00:16 »
0
haber entonces no entendí, como es?? o solo buscas un valor en cualquier tabla y en cualquier campo? o como esta ????

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Pregunta?????
« Respuesta #8 en: Martes 6 de Febrero de 2007, 05:40 »
0
tal vez haciendo una traza, aunque creo que para esto el servidor debe tener soporte para corren en modo depuracion (debug) :(  yo no las he usado en MySQL y siempre he corrido MySQL en windows  :ouch: , pero en SQL Server me han sacado de apuros :P, creo que por ahi esta la idea, o tambien seria si se pudiera  crear un log desde php :P, o "a la mala" con programacion algo asi como el script mostrado


Aporto solo la idea pues no tengo un ejemplo practico :(




Cita de: "Angel_k_Ido"
Vergonzosamente no recuerdo como obtener el número y el nombre de los campos de una tabla así que usé describe. Si alguien me refresca la memoria se lo voy a agradecer.

mysql_num_fields

ya entendi que es Bacano :P


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pregunta?????
« Respuesta #9 en: Martes 6 de Febrero de 2007, 06:20 »
0
Cita de: "F_Tanori"
Cita de: "Angel_k_Ido"
Vergonzosamente no recuerdo como obtener el número y el nombre de los campos de una tabla así que usé describe. Si alguien me refresca la memoria se lo voy a agradecer.

mysql_num_fields
Gracias campeón !  :smartass:
Citar
ya entendi que es Bacano :P
Muy buena esa página y...
Código: Text
  1. Chorra (Argentina)
  2.  
Que raro que esa palabra aparezca junto al nombre de mi país  :lol:  &lt;_&lt;
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Pregunta?????
« Respuesta #10 en: Martes 6 de Febrero de 2007, 13:49 »
0
Si el código está bien, sino que me habia equivocado en leer bien la salida.
El pasado son solo recuerdos, el futuro son solo sueños

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Pregunta?????
« Respuesta #11 en: Martes 6 de Febrero de 2007, 16:37 »
0
Utilizando mysql_num_fields :P
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Buscador de valores</title>
  </head>
  <body>
    <?php
      $valorABuscar="Favio";
      $base="bdforo";
                  
      echo "Buscando el valor \"<strong>$valorABuscar</strong>\" en \"<strong>$base</strong>\"<hr>";
      
      //DB--------------------------------------------------------------
      
      $link = mysql_connect("localhost", "root");
      mysql_select_db($base, $link);
      $sqlTxt = "select table_name from information_schema.tables where table_schema='$base'";  
      //echo $sqlTxt;  
    
      //Obtener Tablas -----------------------------------------------------------------
      //--------------------------------------------------------------------------------
      $Tablas = mysql_query($sqlTxt, $link);


      if(!$Tablas){      
        mysql_close($link);
        echo "No hay tablas";
      }
      else{    
        while ($Tabla = mysql_fetch_row($Tablas)){
          $nombreTabla=$Tabla[0];  
          //echo $nombreTabla .":<br />";
          
          //Obtener Campos -----------------------------------------------------------------
          //--------------------------------------------------------------------------------
          
          $sqlTxt = "select * From $nombreTabla LIMIT 1";
          $ResultTabla = mysql_query($sqlTxt, $link);
                
          $cantidadCampos=mysql_num_fields($ResultTabla);
          
          for ($i=0; $i< $cantidadCampos; $i++){
            $nombreCampo=mysql_field_name($ResultTabla, $i);
            //echo "----" . $nombreCampo . "<br  />";
            
            $sqlTxt = "select $nombreCampo from $nombreTabla where $nombreCampo = '$valorABuscar'";
            $resultado = mysql_query($sqlTxt, $link);
            $encontrado=mysql_affected_rows($link);
            if($encontrado){
              $registro = mysql_fetch_row($resultado);
              $valor = $registro[0];
              if($valor==$valorABuscar){
                echo "Valor encontrado en tabla: <strong> $nombreTabla </strong>, en campo: <strong> $nombreCampo </strong><br />";
              }
            }
          }
        }
        mysql_close($link);
      }
    ?>
  </body>
</html><!--xc2--></td></tr></table><div class='postcolor'><!--exc2--> :comp:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.