Consulta SQL

r0xyN

Buenas tengo estas tablas, EMPLEADO ----- OCUPA ----- CARGO la cardinalidad es de uno a muchos, por lo tanto he optimizado para eliminar la tabla OCUPA de la base de datos, la clave primaria de cargo la meto dentro de la tabla empleado como clave primaria(foranea) también.

Con lo cual se quedaría la tabla empleado cod_empleado(PK)cod_ocupa(PK)(FK) + atributos de la propia tabla empleado

Me gustaría hacer una consulta que me dijese los empleados de la base de datos : Nombre, direccion etc + el cargo que ocupa(atributo de la tabla CARGO). Como se haría he buscado en google pero estoy bastante perdio, gracias.

sharker

Con una cardinalidad uno a muchos tienes una tabla OCUPA?
Con CARGO y EMPLEADO no te basta?

EDIT: no lo habia leido bien ahora digo xD

Si un cargo puede ocuparlo varios empleados entonces la tabla empleado esta bien sorry XDD

El problema que tienes es que con un SELECT ALL te salen todos los atributos y la id de cargo, pero no te sale el cargo en texto no?

Ga1a
  1. Foro equivocado.
  2. O te he entendido muy mal o para "optimizar" has suprimido la tabla resultante de una relación? Porque eso es un antónimo de lo que se debería hacer.
  3. Con un Join de las dos tablas creo que se solucionaría tu problema.
  4. Y no caigas en errores
B

Si no te he entendido mal (te explicas de culo), tienes que hacer un JOIN entre empleados y cargo.

NeB1

SELECT * FROM mediavida.offtopic WHERE topicRelated=NULL ORDER BY estupidez

y eso que lo que has dicho me suena a chino :P

sharker

la verdad es q lo de cargo es una tabla un poco sin sentido xD

B

O la de ocupa xDD

r0xyN

#2 eso es.. mas o menos, es decir no es sin sentido, un empleado ocupa un cargo que este cargo tiene como atributos : nombre del cargo, hora de entrada, hora de salida, etc..

Es decir Cargo: cod_cargo: 1, cargo_nombre: Informatico, cargo_hora_entrada: 08.30 etc..

Nose porque decís que es una tabla sin sentido.

Lo que quiero es hacer una consulta que la solución fuese tal que

Nombe empleado : Juanico
direccion: .....
nº telefono:
cargo: Informatico
Hora entrada: 08.00
Hora salida : 20.00

Me he explicao? jejeje gracias

y la relacion seria: M Empleados --- OCUPA --- 1 CARGO La tabla relacional OCUPA, se optimiza al ser la cardinalidad de N:1 (es una tabla bastante Obvia)

r0xyN

Ah perdonad esto debería ir en el foro de informática, si algun moderador me lo mueve perfecto :)

B

#8: Pero ocupa no es una tabla, si no un nombre de ralación, no? Precisamente con 1:N no nace una tabla de la relación. Ahora mismo no me acuerdo de la sintaxis pero solo tienes que consultar tablaempleados.*, tablacargo.cod (JOIN).

Z3R0KULL

Con lo cual se quedaría la tabla empleado cod_empleado(PK)cod_ocupa(PK)(FK)

wat? pones la clave foranea como clave principal?????Hazle un favor a la humanidad y dejala solo como clave ajena y deja solo el cod_empleado como clave principal ( a no ser que tengas varios empleados con el mismo codigo y los tengas que identificar por cod_ocupa)
Tienes un lio con el modelo de chen que no te aclaras.

sobre tu pregunta, si no recuerdo mal en oracle sería (no lo he probado, asi que no se si funcionará, pero creo que no habrá problema)

select templeado.todoloquequierasdeesatabla, tocupa.loquenecesites from templeado, tocupa where templeado.cod_ocupa = tocupa.cod_ocupa;

***Cuando digo tabla ocupa digo tabla cargo...

Kaos

SELECT e.nombre, c.cargo FROM empleado e, cargo c WHERE e.id_cargo=c.id_cargo;

LiKuM

lo q tu quieres es una PRIMARY KEY compuesta

SeiYa

SELECT e.Nombre, e.Apellidos, c.Cargo FROM Empleados e INNER JOIN Cargos c ON e.Id_Cargo = c.Id_Cargo;

Más o menos.

JuAn4k4

Empleado <-- 1:N -- Cargo

( La flecha indica el N)

Si eso es lo que quieres, y de los CARGOS no quieres saber nada mas que el cargo, y CARGO no se relaciona con nada más, puedes hacer la optimizacion que es meter el cargo dentro del empleado, sin claves ni nada, como atributo.

Pero eso de que hacer una 1:N en 2 tablas es una optimizacion... pues no.

PD: Una cosa es el cargo y otra el horario. Hay jefes que van de mañanas y jefes que van de tardes, pero los 2 son jefes.

PD2: Te repito de nuevo, si el CARGO es solo eso, un mero "atributo", deberia ir como ATRIBUTO. ¿ Lo vas a usar en algun sitio mas ? Daros cuenta que tener una relacion para "CARGO" es decir mucho, no me imagino una situacion para tener CARGO como entidad.

SeiYa

#15 cargo como entidad, se hace cuando muchos empleados pueden tener el MISMO cargo.

Seguramente luego relacione por otra parte el cargo para averiguar lo que sea, pero lo correcto es que si van a tener las mismas propiedades los que compartan cargo, este debe ser entidad.

Lo correcto eh, ñapas hacemos todos XD

Usuarios habituales