PostgreSQL - Select de 2 tablas

 
Vista:

Select de 2 tablas

Publicado por floren (1 intervención) el 14/09/2004 20:30:28
Buenas, necesito hacer una consulta con las siguientes connotaciones:

Son 2 tablas

En la primera digamos que se estructura así:

ID NOMBRE

En la segunda se van insertando valores relacionados con los registros de la primera tabla. Algo así:

ID_Tabla1 NOMBRE

De forma que para un mismo registro de la primera tabla puede tener varios valores (registros) en la segunda tabla.

Lo que preciso es poder hacer un select donde filtre todos los registros de la primera tabla en los que coincidan 2 o 3 registros de la segunda.

ejemplo:

Quiero mostrar de la tabla 1 todos los empleados que son:

altos
guapos
trabajadores

Estas caracteristicas son las que se almacenan en la segunda tabla.

Algo así:

"select * tabla1 where tabla2.caracteristicas=" & variable

El procedimiento es el siguiente:

Priemero muestro un empleado, luego extraigo de la segunda tabla todas sus caracteristicas, que están en la misma columna.

Luego quiero sacar el reporte de todos los empleados que tienen las mismas caracterisitcas que él.
Ese es el select que preciso, el problema esta en que las caracteristicas estan en la misma columna de la segunda tabla.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Select de 2 tablas

Publicado por Gina Lopez (2 intervenciones) el 16/09/2004 00:40:14
A ver si entendí, pero creo que necesitas tres tablas si quieres hacerlo mas estructurado (codificando las caracteristicas), aquí te explico:

TABLA 1: Empleados
ID NOMBRE
1 Gina
2 Carlos

TABLA 2: CARACTERISTICAS
IDCARAC CARACTERISTICA
1 Alto
2 Guapo
3 Trabajador

TABLA 3: EMPLEADO_CARACTERISTICAS
ID IDCARAC
1 1 (Gina - Alto)
1 2 (Gina - Guapo)
2 2 (Carlos - Guapo)
2 3 (Carlos - Trabajador

Entonces, dado que tu ya tienes el ID del empleado del cual quieres buscar sus similares, asumamos que esta en la varible IDMaster:

SELECT DISTINCT A.*
FROM EMPLEADOS A, EMPLEADOS_CARACTERISTICAS B
WHERE A.ID = B.ID AND
B.IDCARAC IN
(SELECT C.IDCARAC
FROM EMPLEADOS_CARACTERISTICAS C
WHERE C.ID = IDMAster)

Este select te trae la lista de empleados que tienen por lo menos una de las caracteristicas del empleado previamente seleccionado.

Si quieres los empleados con exactamente todas las mismas caracteristicas, ya es diferente.....O si aun quieres tener solo dos tablas tambien es diferente....

Claro que toda esta sintaxis depende de la base de datos con la que estes trabajando, esto te sirve x ejemplo para SQL Server, Access, pero para MySQL es otra sintaxis.

Espero que te ayude en algo, o si prefieres aclara un poco más lo que necesitas y tu entorno de desarrollo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar