Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Una unica consulta en varias tablas de igual estructura

Estas en el tema de Una unica consulta en varias tablas de igual estructura en el foro de Mysql en Foros del Web. Hola. Bueno llevo dos dias intentando hacer algo que parece tan sencillo y comun pero para lo que no encuentro ningun ejemplo de nadie que ...
  #1 (permalink)  
Antiguo 06/11/2012, 13:24
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Una unica consulta en varias tablas de igual estructura

Hola.

Bueno llevo dos dias intentando hacer algo que parece tan sencillo y comun pero para lo que no encuentro ningun ejemplo de nadie que haya querido hacer lo mismo.

Tengo varias tablas por necesidad, exactamente con la misma estructura, una para cada pueblo con telefonos y nombres. Se trata de que el usuario pueda buscar si esta su numero en la base de datos independientemente del pueblo que sea.

Para un solo pueblo (tabla) ha sido facil generarlo con dreamweaver y hay muchos ejemplos:

Código:
SELECT * 
FROM pueblo1 
WHERE telefono = $telef_Recordset1
Pero para buscar el telefono en varias tablas no he encontrado la manera tras probar y probar diversas maneras.

Por ejemplo las tablas serian algo asi

Código:
tabla: pueblo1
|id|nombre|telefono |
| 1|pepito|987654001|
| 2|pepita|987654002|

tabla: pueblo2
|id|nombre|telefono |
| 1|pepito|987654003|
| 2|pepita|987654004|

tabla: pueblo3
|id|nombre|telefono |
| 1|pepito|987654005|
| 2|pepita|987654006|
Cuando el usuario mete por ejemplo el numero 987654004 le mostraria sus datos tal que asi:
Código:
|nombre|telefono |
|pepita|987654004|
Asi que necesito recoger tambien los datos relativos a ese usuario cuando es encontrado para mostrarlos.

Una de las cosas que he probado es:
Código:
	SELECT *
	FROM pueblo1, pueblo2
	WHERE pueblo1.telefono=$telef_Recordset1 
        OR pueblo2.telefono=$telef_Recordset1
Tambien probe con el NATURAL JOIN y otras maneras de unir las dos tablas en una pero sin resultado, ya que no encuentro precedentes de como hacer que cuando acabe de buscar en una tabla, si no ha encontrado el numero, siga buscando en la siguiente mediante MySQL o unir las tablas de manera virtual para que pueda buscar el campo telefono como si fuera una sola tal que asi:

Código:
Tabla virtual temporal
|id|nombre|telefono |
| 1|pepito|987654001|
| 2|pepita|987654002|
| 1|pepito|987654003|
| 2|pepita|987654004|
| 1|pepito|987654005|
| 2|pepita|987654006|

Última edición por nucleorion; 06/11/2012 a las 13:29
  #2 (permalink)  
Antiguo 06/11/2012, 13:36
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Una unica consulta en varias tablas de igual estructura

Lo primero que preguntaria cualquiera que te quiera ayudar (En este caso yo) es
Porque 3 tablas con la misma estructura?
  #3 (permalink)  
Antiguo 06/11/2012, 13:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Una unica consulta en varias tablas de igual estructura

Como ya te están diciendo, tres tablas con la misma estructura muestran un error de diseño bastante grande.
Yo empezaría por modificar eso, y recién entonces podrás ver que las consulta sse veulven muy simples...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 07/11/2012, 05:00
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Una unica consulta en varias tablas de igual estructura

Ya dije que por necesidad. No es un error de diseño es una necesidad. Ya se que hacerlo con una sola tabla es mas facil, ya puse el ejemplo.

Necesito varias tablas con la misma estructura porque el usuario va a actualizar cada una por separado directamente en phpmyadmin. Todavia me cuesta creer que no haya una manera de hacer facilmente algo que parece tan sencillo como unir las tablas una debajo de la otra en tiempo de ejecucion o buscar en una tras de otra.

Última edición por nucleorion; 07/11/2012 a las 05:06
  #5 (permalink)  
Antiguo 07/11/2012, 05:18
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Una unica consulta en varias tablas de igual estructura

Cita:
Iniciado por nucleorion Ver Mensaje
Ya dije que por necesidad. No es un error de diseño es una necesidad. Ya se que hacerlo con una sola tabla es mas facil, ya puse el ejemplo.

Necesito varias tablas con la misma estructura porque el usuario va a actualizar cada una por separado directamente en phpmyadmin. Todavia me cuesta creer que no haya una manera de hacer facilmente algo que parece tan sencillo como unir las tablas una debajo de la otra en tiempo de ejecucion o buscar en una tras de otra.
Usa un UNION
  #6 (permalink)  
Antiguo 07/11/2012, 05:56
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Una unica consulta en varias tablas de igual estructura

El JOIN no funciona porque junta los campos, no une la tabla al final de la otra
  #7 (permalink)  
Antiguo 07/11/2012, 06:20
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Una unica consulta en varias tablas de igual estructura

Repito, usa un UNION

SELECT 1
UNION
SELECT 2
UNION
SELECT 3
  #8 (permalink)  
Antiguo 07/11/2012, 06:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Una unica consulta en varias tablas de igual estructura

¿Estás seguro de entender lo que lees?
Te estás diciendo que uses un UNION, no un JOIN. Si no conoces un UNION, mi recomedación es que acudas a un manual básico de SQL (uno MUY básico), porque se trata del a-b-c de SQL...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 07/11/2012, 08:13
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Una unica consulta en varias tablas de igual estructura

OK gracias, ahora he buscado en http://dev.mysql.com/doc/refman/5.0/es/union.html y ahi si lo encontre. Perdona, al no encontarlo pesaba que me habias puesto Join en castellano :P

Y luego en el WHERE deberia hacer referencia solo a la ultima tabla para que me busque en todas?

He probado de varias formas pero no me funciona bien:

Cita:
SELECT pueblo1 UNION SELECT Pueblo2
FROM pueblo1, pueblo2
WHERE pueblo2.telefono=$telef_Recordset1
  #10 (permalink)  
Antiguo 07/11/2012, 08:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Una unica consulta en varias tablas de igual estructura

Cada SELECT debe llevar el WHERE que le corresponda, o simplemente no lo aplicará.
Las únicas clausulas que se aplican en forma general, y en el último SELECT son GROUP BY y ORDER BY.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 08/11/2012, 07:47
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Una unica consulta en varias tablas de igual estructura

nucleorion, prueba esto por favor.
Código MySQL:
Ver original
  1. SELECT telefono FROM pueblo1 WHERE telefono=$Telef ORDER BY telefono ;
  2.              UNION (SELECT telefono FROM pueblo2 WHERE telefono=$Telef ORDER BY telefono) ;
  3.              UNION (SELECT telefono FROM pueblo3 WHERE telefono=$Telef ORDER BY telefono) ;
Saludos.
  #12 (permalink)  
Antiguo 09/11/2012, 13:18
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Una unica consulta en varias tablas de igual estructura

Me da un parse error

He probado sin los ; y sin los Order By ya que no necesito que ordene un unico resultado pero tampoco.

He creado un array en php con los nombres de las tablas y he metido la busqueda y asignacion en un foreach.

Asi que aunque ya lo tengo funcionando, ahora estoy con la intriga de si se podra y como. :P

De momento os dejo aqui una solucion en php, perdon por no ser el sitio exacto, pero puede que a alguno que llegue aqui algun dia, le sea util. Ademas en el momento que encuentra el numero deja de buscar:

Cita:
Editado: No se permiten códigos de programación en los foros de BBDD. SI la solución es de PHP, postealo como aporte en el Foro de PHP.

Última edición por gnzsoloyo; 09/11/2012 a las 13:31 Razón: Codigo de programción Off-Topic. Soluciones en PHP van en el Foro de PHP.
  #13 (permalink)  
Antiguo 09/11/2012, 14:30
 
Fecha de Ingreso: marzo-2012
Mensajes: 53
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Una unica consulta en varias tablas de igual estructura

En el ejemplo anterior "se me fueron" los ';' y otras cositas. Sorry.

Esta es la manera que me funciona en el lenguaje de programacion que uso (probado con SQLyog).
Código MySQL:
Ver original
  1. SET @cVar = "28427733" ;
  2.  
  3. SELECT telefono FROM pueblo1 WHERE telefono=@cVar
  4.    UNION (SELECT telefono FROM pueblo2 WHERE telefono=@cVar)
  5.    UNION (SELECT telefono FROM pueblo3 WHERE telefono=@cVar) ;
Saludos.

Etiquetas: estructura, igual, join, select, tabla, tablas, unica
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 12:19.