SQL - Utilizar Llaves Foráneas como PUNTEROS?

 
Vista:

Utilizar Llaves Foráneas como PUNTEROS?

Publicado por Kagunlou (2 intervenciones) el 29/05/2007 10:26:33
Hola,
me preguntaba si es posible utilizar llaves externas como punteros, que se referencien automáticamente en las querys SQL sin tener que hacerlo manualmente en el "WHERE" de la query. Lo he estado buscando por el Google y no lo he encontrado. Me parece algo tan obvio que me extraña mucho que no se haya implementado.

Un ejemplo de lo que quiero decir :

CREATE TABLE TABLA_1
(
ID1 INTEGER,
ID2 INTEGER,
NOMBRE VARCHAR(50)
// etc.
)

CREATE TABLE TABLA_2
(
ID INTEGER,
ID1 INTEGER,
ID2 INTEGER,
// etc.

CONSTRAINT LLAVE_FK FOREIGN KEY (ID1TABLA1, ID2TABLA1)
REFERENCES TABLA_1 (ID1,ID2)
)

En definitiva, la tabla2 apunta a tabla1 mediante la llave externa "llave_fk" compuesta por los campos "id1" y "id2"

Mi pregunta es si en alguna implementación de SQL es posible hacer :

SELECT llave_fk.nombre FROM tabla_2

en lugar de hacer :

SELECT t1.nombre
FROM tabla_2 t2, tabla_1 t1
WHERE
t2.id1 = t1.id1 AND
t2.id2 = t1.id2

Gracias por vuestra paciencia :)
Saludos.
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
sin imagen de perfil

RE:Utilizar Llaves Foráneas como PUNTEROS?

Publicado por DALSOM (195 intervenciones) el 29/05/2007 15:28:33
HASTA DONDE SE, ESAS RELACIONES SOLO SON PARA INTEGRIDAD DE LOS DATOS AL INTRODUCIRLOS, MODIFICARLOS O BORRARLOS.

PERO CREO QUE TENEMOS LA OPCION DE HACER ALGO DIFERENTE CON LOS JOINS ASI :

Select t1.nombre from tabla_2 t2 inner join tabla_1 t1 on t2.id1 = t1.id1 and t2.id2 = t1.id2

Y LUEGO PUEDES PONER UN WHERE CON CUALQUIER OTRA CONDICION.

where t1.nombre like '%aba%'

Y TENDRAS SOLO LOS CAMPOS EN T2 QUE COINCIDAN CON LA CONDICION EN LOS JOINS Y QUE CUMPLAN CON LA CONDICION EN EL WHERE.

LO QUE DICES, DE LA RELACION, COMO EN EL CASO DE FOX PRO CON SUS TABLAS, NUNCA LO HE VISTO EN SQL.

DE EXISTIR, O HABER ALGO PARECIDO, PODRIAN SER LAS VISTAS, QUE SON SELECT PREESTABLECIDOS, Y QUE PUEDES CONDICIONAR COMO SI FUERAN UNA TABLA, ADEMAS, PUEDEN SER ACTUALIZABLES, AUNQUE NUNCA LO HE HECHO.

PRUEBA EL CREATE VIEW ASI :

Create view MIVISTASQL AS Select t1.nombre from tabla_2 t2 inner join tabla_1 t1 on t2.id1 = t1.id1 and t2.id2 = t1.id2

Y LUEGO PUEDES SELECCIONAR COMO DICES, SOLO CON EL CAMPO QUE TE INTERESA , ASI :

Select t1.nombre from MIVISTASQL

CLARO, AQUI NO HE PUESTO TODOS LOS CAMPOS DE LAS DOS TABLAS.

ESPERO HABERTE AYUDADO.
SALUDOS,
DALSOM.
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

RE:Utilizar Llaves Foráneas como PUNTEROS?

Publicado por Kagunlou (2 intervenciones) el 29/05/2007 18:07:34
Gracias por darme todas esas alternativas, la de los joins ya la conocía y las vistas las uso poco.
Mi idea era poder utilizar las claves externas como punteros, como hacemos con programación (cuando un puntero apunta a una estructura de datos ponemos "puntero.campo" para acceder a los campos).
Me he basado básicament en esa idea, pero creo que el SQL no contempla eso.
Me extraña, pero algun motivo habrá supongo.

Gracias de todos modos y saludos cordiales.
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