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

consulta a dos tablas con campos iguales

Estas en el tema de consulta a dos tablas con campos iguales en el foro de Mysql en Foros del Web. hola amigos haber si alguien me puede hechar una mano con una consulta q no sale ni a la de tres Es una consulta a ...
  #1 (permalink)  
Antiguo 10/09/2012, 17:03
 
Fecha de Ingreso: septiembre-2011
Ubicación: España
Mensajes: 118
Antigüedad: 12 años, 7 meses
Puntos: 0
consulta a dos tablas con campos iguales

hola amigos haber si alguien me puede hechar una mano con una consulta q no sale ni a la de tres
Es una consulta a dos tablas distintas pero con el mismo nombre en los campos

La consulta q tengo, es la siguiente, no me funciona bien ya q yo quiero recoger los datos de la tabla1 y tabla2 y no me los muestra

select SQL_CALC_FOUND_ROWS p.nombre,c.fecha,c.nombre,p.fecha
from tabla1 p , tabla2 c
where nombre='pepe' and edad<'20'
group by id
order by id desc LIMIT 0,5




Tambien estube mirando de hacer una UNION, pero tb me da fallo. Tengo algo asi:

select SQL_CALC_FOUND_ROWS nombre,fecha from tabla1
where nombre='pepe' and edad<'20' group by id order by id desc LIMIT 0,5

union

select SQL_CALC_FOUND_ROWS nombre,fecha from tabla2
where nombre='pepe' and edad<'20' group by id order by id desc LIMIT 0,5


Alguien me podria hechar una mano, gracias
  #2 (permalink)  
Antiguo 10/09/2012, 17:15
Avatar de punk-devil  
Fecha de Ingreso: febrero-2008
Ubicación: Tuxtla Gutiérrez, Chiapas, Mexico
Mensajes: 19
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: consulta a dos tablas con campos iguales

Al tener nombres de campos iguales, el problema que resulta es la ambigüedad, por lo que (aprovechando que usas alias) deberás especificar la tabla de cada uno de los campos del Where.



Código:
select SQL_CALC_FOUND_ROWS p.nombre,c.fecha,c.nombre,p.fecha 
from tabla1 p , tabla2 c 
where p.nombre='pepe' and c.nombre='pepe' and p.edad<'20' and c.edad<'20' 
group by p.id 
order by p.id desc LIMIT 0,5
Aunque bueno, tendrías 2 veces cada registro
  #3 (permalink)  
Antiguo 11/09/2012, 03:04
 
Fecha de Ingreso: septiembre-2011
Ubicación: España
Mensajes: 118
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: consulta a dos tablas con campos iguales

gracias punk-devil pero asi n me va muy bien la verda, no se puede hacer mejor por Union?
  #4 (permalink)  
Antiguo 11/09/2012, 07:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: consulta a dos tablas con campos iguales

¿Has probado así?
(select SQL_CALC_FOUND_ROWS nombre,fecha from tabla1
where nombre='pepe' and edad<'20' group by LIMIT 0,5)
union all
(select SQL_CALC_FOUND_ROWS nombre,fecha from tabla2
where nombre='pepe' and edad<'20' group by id desc LIMIT 0,5)
order by id desc

Por cierto, por qué agrupas por id. No parece tener sentido pues el id es diferente en una tabla y no estás usando ninguna función de agrupado, tipo SUM, AVG, etc.
Tal vez así obtendrás lo mismo
(select SQL_CALC_FOUND_ROWS id, nombre,fecha from tabla1
where nombre='pepe' and edad<'20' LIMIT 0,5)
union all
(select SQL_CALC_FOUND_ROWS id, nombre,fecha from tabla2
where nombre='pepe' and edad<'20' LIMIT 0,5)
order by id desc

Última edición por jurena; 11/09/2012 a las 08:17
  #5 (permalink)  
Antiguo 11/09/2012, 15:10
 
Fecha de Ingreso: septiembre-2011
Ubicación: España
Mensajes: 118
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: consulta a dos tablas con campos iguales

gracias jurena es lo que estaba buscando
Segun vi en tu codigo lo q me fallaba en la union eran los parentisis y el order by que no sabia donde ponerlo

A!!! lo de group by tienes razon, pues lo puse por que lei el manual para hacer la consulta ya q me daba error, pero se ve que no lo entendi bien jeee

gracias, saludossss

Etiquetas: campos, iguales, select, sql, tabla, tablas
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 01:05.