Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: skar_alex en 02 de Enero 2015, 16:13

Título: Uniendo 2 tablas de una base de datos por medio de una condicion
Publicado por: skar_alex en 02 de Enero 2015, 16:13
Hola a todos, estoy algo confuso al hacer una consulta en SQLDeveloper, lo que intento es unir 2 tablas por medio de una condición el problema es que hay columnas que tienen el mismo nombre en las 2 tablas y solo requiero una de las dos, esto es hay un campo lllamado mes, que existe en la tabla A y B y solo quiero el mes de la tabla A, cada tabla contiene 150 elementos, necesito saber si hay una forma de hacerlo más rápido oh si es neceario escribir cada uno de los elementos en el Select.

Esto sería algo como;

Select a.*,b.* from tablaA a, tablaB b
where a.mes=b.mes
and mes=10;

El resultado de este query muestra todas las columnas, pero no quisiera
que se repitiera los campos que estan en A y en B, (es decir no duplicar columnas).

Espero me puedan ayuda.


Título: Re:Uniendo 2 tablas por medio de una condicion
Publicado por: Alex Rodríguez en 02 de Enero 2015, 18:47
Puedes especificar qué campos quieres rescatar. O bien puedes hacer lo que se denomina un join, que es una operación que permite unir tablas y quedarte sólo con aquellas filas que tienen en común un atributo. Hay varias maneras de hacer joins. Puede ser un inner join (sólo te quedas con las filas donde hay coincidencia del atributo buscado, y sólo con una columna de las dos coincidentes), un left join, right join, outer join, etc.

Ejemplo:

SELECT a*, b*
FROM a
INNER JOIN b ON (a.mes = b.mes)
WHERE a.mes = 10;

El tipo de join a usar depende de lo que quieras lograr.

Puedes probar cambios, por ejemplo

SELECT a*, b*
FROM a
LEFT JOIN b ON (a.mes = b.mes)
WHERE a.mes = 10;

Y ver los resultados que obtienes

Saludos
Título: Re:Uniendo 2 tablas por medio de una condicion
Publicado por: skar_alex en 06 de Enero 2015, 18:33
gracias, x la ayuda lo que en realidad requiero es que la consulta que genero me debe devolver todos los campos, pero en este caso hay un campo llamado mes, anio que existe en tabla a  y en tabla b, lo que requiero es que no aparezca más que solo una vez, porque la otra cosa es hacer algo así.

select a.*,b.nombre,b.apellido,b.sexo from tabla1 a, tabla2 b
where b.anio=a.anio;
lo que no quiero es hacerlo asi porque supongamos una tabla de 40 columnas cada una, tendria que colocar en la segunda los 38 elementos restantes, para que no aparezca de nuevo
Título: Re:Uniendo 2 tablas por medio de una condicion
Publicado por: Alex Rodríguez en 06 de Enero 2015, 19:55
Usando join puedes lograr eso... haz pruebas  ;)
Título: Re:Uniendo 2 tablas por medio de una condicion
Publicado por: skar_alex en 07 de Enero 2015, 16:26
ok gracias, lo trataré