Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Consulta a una tabla con datos de otra!!! (https://www.clubdelphi.com/foros/showthread.php?t=79937)

djMadox 22-08-2012 22:00:34

Consulta a una tabla con datos de otra!!!
 
Hola, tengo la BD creada, las tablas, todo correctamente...
Pero necesito hacer una consulta para saber los telefonos de un funcionario 'X'...
Por ejemplo, las tablas que tengo serían:

empleados(ci, nombre, apellido, fecha_nacimiento)
tiene(ci, nrotel)
telefonos(nrotel, tipo)

/*ci y nrotel son numeros del tipo integer*/

lo que necesito es, saber el numero de celular de cada funcionario...
sé que seria algo como consultar 1º por 'ci' de 'empleados', luego con 'ci' consultar los 'nrotel', y al fin verificar cuál de los muchos 'nrotel' que pueden haber para este empleado tendría " tipo='celular' "...

alguien me podría ayudar?
Soy nuevo en eso de BDs y consultas SQL...

Hoy alguien me dijo que podría ser con JOIN o algo así...
En todo caso, cuál sería la sintaxis??

A todos, muchas gracias por adelanto...

D-MO 22-08-2012 22:26:20

Algo como esto podría funcionar, pero claro, pueden resultar nombres duplicados si el funcionario tiene mas de un número.

Código SQL [-]
select 
    e.nombre, e.apellido, e.fecha_nacimiento, t.nrotel, ts.tipo
from
    empleado e, tiene t, telefonos ts
where
    e.ci = t.ci AND t.nrotel = ts.nrotel
Pero supongo que esto puede aclarar tu duda.

Saludos

kapcomx 22-08-2012 22:53:38

inner join
 
No se que base de datos uses pero si estas usando Interbase el ejemplo de D-MO te va muy bien, ahora recuerdo que en Mysql
usaba el inner join mas o menos asi....
Código Delphi [-]
select  empleados.nombre, empleados.apellido, empleados.fecha_nacimiento, tiene.nrotel, telefonos.tipo
from empleados inner join tiene on empleados.ci= tiene.ci inner join telefonos on 
tiene.nrotel=tiene.nrotel

tambien te recomiento que uses el prefijo fk_ para identificar las llaves foraneas de tus tablas, al menos ami se me hace mas facil, y sobre todo le pongas un campo id a todas tus tablas esto ayuda mucho.

empleados(id_empleado, nombre, apellido, fecha_nacimiento)
tiene(id_tiene, fk_empleado, nrotel)
telefonos(id_telefonos, fk_tiene, tipo)

Saludos...:cool:


La franja horaria es GMT +2. Ahora son las 06:23:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi