Foros del Web » Programando para Internet » PHP »

ayuda select

Estas en el tema de ayuda select en el foro de PHP en Foros del Web. Hola, foreros: Espero que me puedan ayudar, jeje. Mirar tengo una base de datos, sql, que tiene un monton de tablas, con todas las columnas ...
  #1 (permalink)  
Antiguo 15/07/2009, 14:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 10 años, 9 meses
Puntos: 1
ayuda select

Hola, foreros:

Espero que me puedan ayudar, jeje. Mirar tengo una base de datos, sql, que tiene un monton de tablas, con todas las columnas iguales

¿Como hago un select para todas las tablas sin escribir los nombres de las tablas?
  #2 (permalink)  
Antiguo 15/07/2009, 15:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ayuda select

Puedes usar mysql_list_tables desde PHP, o una consulta como:
Código sql:
Ver original
  1. SHOW TABLES FROM db;

Saludos.
  #3 (permalink)  
Antiguo 15/07/2009, 15:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: ayuda select

si pero con eso solo me muestra los nombres de las tablas no me la selecciona
y con respecto al mysql_list_table yo utiliso un codiogo pero este solo me selecciona la primera y la ultima tabla mira te lo mostrare para q tu me ayudes.

Este es el código:
Código PHP:
include("Funcion.php");Coneccion();
    
//Lista de Tabalas Para la conección.
$list mysql_list_tables ("HQM_APC");
$i 0;
while (
$i mysql_num_rows ($list)) {
$tb_names[$i] = mysql_tablename ($list$i);
$selec "select*from $tb_names[$i]  union select*from amigos order by PN ";
$i++;}
$result=mysql_query($selec) or die ('Comunicarse con soporte tecnico Comprobasion');$row=mysql_fetch_array($result);
if( 
$row['PN']== "" ){echo "<script type='text/javascript'> alert('Su Busques No a Producido Nincun Resultado \\n ( Si desea Utilise la Busqueda Abansada para Mayor Eficacia\)');document.location=('Buscar.php')</script>";}
else {  
// La acción que ejecuto va aquí } 
  #4 (permalink)  
Antiguo 15/07/2009, 16:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ayuda select

no entiendo que es lo que quieres hacer, un SELECT que haga con un UNION de todas las tablas?
  #5 (permalink)  
Antiguo 15/07/2009, 16:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: ayuda select

si exactamente eso mismo es lo que quiero hacer.
pero si no se puede con un union pues dime como puedo hacerlo.
y disculpame la molestia.

y gracias por tu ayuda

Última edición por Hallking; 15/07/2009 a las 16:23
  #6 (permalink)  
Antiguo 15/07/2009, 16:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: ayuda select

Si, se puede con un UNION, pero te toca colocar los nombres de la tabla, a menos que,

Recorrar el mysql_list_tables de la Base de datos y luego vayas añadiendo a la estructura sql el union.

Al final deberia quedar el comando algo asi:

SELECT campos FROM tabla1
UNION
SELECT campos FROM tabla2
UNION
.....
....

Saludos!!
  #7 (permalink)  
Antiguo 15/07/2009, 16:24
Avatar de Luis207  
Fecha de Ingreso: abril-2009
Mensajes: 52
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: ayuda select

No me deja poner enlaces por no tener 30 mensajes pero consultando en Google: "select union all tables" tienes unos cuantos enlaces en los que te explican todo.
  #8 (permalink)  
Antiguo 15/07/2009, 16:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ayuda select

Pues puedes hacer primero que mysql_list_tables te regrese todas las tablas, las recorres en un ciclo y las agregas y luego usas el UNION para pegarlas, como por ejemplo:
Código php:
Ver original
  1. $tables = mysql_list_tables('db');
  2. $queryTemplate = 'SELECT * FROM %s';
  3. $querys = array();
  4.  
  5. foreach($tables as $table) {
  6.       $querys[] = sprintf($queryTemplate, $table);
  7. }
  8.  
  9. $query = implode(' UNION ', $querys);
  10. echo $query;

Saludos.
  #9 (permalink)  
Antiguo 15/07/2009, 17:00
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: ayuda select

ok gracias pero me puedes esplicar el codigo y disculpa la molestia es que no me gusta copiar me gusta aprender.

gracias
  #10 (permalink)  
Antiguo 15/07/2009, 22:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ayuda select

Pues hace lo que te dijieron más arriba, primero obtiene todas las tablas, luego las une en un array y al último las junta usando UNION para formar un Query.

Saludos.
  #11 (permalink)  
Antiguo 15/07/2009, 23:00
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: ayuda select

GatorV
disculpame la molestia pero el me da un error en esta parte del codigo
foreach($tables as $table)
me da el siquiente error

Warning: Invalid argument supplied for foreach() in C:\wamp\www\Nueva carpeta\d.php on line 33

me puesdes ayudar
  #12 (permalink)  
Antiguo 15/07/2009, 23:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ayuda select

Una disculpa lo correcto es así:
Código php:
Ver original
  1. $tables = mysql_list_tables('db');
  2. $queryTemplate = 'SELECT * FROM %s';
  3. $querys = array();
  4.  
  5. while ($row = mysql_fetch_row($tables)) {
  6.       $table = $row[0];
  7.       $querys[] = sprintf($queryTemplate, $table);
  8. }
  9.  
  10. $query = implode(' UNION ', $querys);
  11. echo $query;
  #13 (permalink)  
Antiguo 15/07/2009, 23:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 188
Antigüedad: 10 años, 9 meses
Puntos: 1
GatorV
gracias realmete funciono pero tenemos un problemita y es q al impimir la bariable $query me sale sobrando un union lo cula me daria un error como tu cres q podamos resolver esta situacion y disculpame si molesto o pido demaciado.

ok disculpa pero ya lo solucione solo tengo q hacer esto.
Código PHP:
echo $query." select*from amigos"
lo unico malo es que no se podra eliminar esa tabla pero no importa.
gracias

hey disculpame pero como puedo introducir un order by y una busqueda
y perdona la confiansa
a gracias por todo

ok gracias de todas forma pero ya lo solucione

Última edición por GatorV; 16/07/2009 a las 16:00
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:58.