PDA

Ver la Versión Completa : Consultar 2 tablas relacionadas


mlara
06-08-2003, 02:43:18
Veamos este caso:


Campos de la tabla1:

Codigo
Nombres
Apellidos

Campos de la tabla2:

Estudiante
Afiliacion

Estudiante en la tabla2 tiene una restricción de clave foránea. Apunta a Codigo en la tabla1.

Ejecuto la siguiente consulta:


SELECT T1.*, T2.Afiliacion FROM Tabla1 T1, Tabla2 T2 WHERE T1.Codigo = T2.Estudiante

Si la tabla2 está vacía la consulta no me retorna nada.

Si la tabla2 tiene registros la consulta retorna por cada registro en la tabla1 un número de filas igual al número de registros relacionados en la tabla2.

Supongamos que en las tablas tengo:


Codigo Nombres Apellidos
------ ------- ---------
01 Alberto Rincón
02 Juan Pérez

Estudiante Afiliacion
---------- ----------
01 Entidad X

La consulta devuelve:


Codigo Nombres Apellidos Afiliacion
------ ------- --------- ----------
01 Alberto Rincón Entidad X

Cómo escribo una consulta para que esta me retorne todos los registros de la tabla1 incluso si no hay relaciones en la tabla2?

Lo que quisiera es una respuesta de este tipo:


Codigo Nombres Apellidos Afiliacion
------ ------- --------- ----------
01 Alberto Rincón Entidad X
02 Juan Pérez <NULL>


Muchas gracias por su colaboración.

delphi.com.ar
06-08-2003, 03:01:57
Lo que tu pides es un OUTER JOIN, pero la sintaxis depende del motor de datos que utilices... ¿Qué motor utilizas?

mlara
06-08-2003, 07:09:33
Gracias por responder.

Estoy tratando de hacer la consulta en Paradox, pero dado que estoy migrando al tiempo la base de datos, luego tendré que hacerla en InterBase.

__cadetill
06-08-2003, 10:08:26
supongo que lo que quieres es algo asi


select T1.*, T2.Afiliacion
from Tabla1 T1 LEFT OUTER JOIN Tabla2 T2 on
(T1.Codigo = T2.Estudiante)


Espero te sirva