Sentencia Select

16/08/2004 - 12:05 por Elena | Informe spam
Hola Grupo,
tengo dos tablas una padre y una hija (relación 1:N)
habría alguna manera de hacer que en una sentencia me devuelva los registros
de la siguiente manera:

Padre Hija

padre1 Hijo 1-1
NULL Hijo 1-2
NULL Hijo 1-3
padre2 Hijo 2-1
NULL Hijo 2-1

Os envío el script de las tablas:
create table padre ( codigo_padre int primary key,
nombre_padre varchar(20) )
create table hijo ( codigo_hijo int primary key,
codigo_padre int,
nombre_hijo varchar(20) )
insert into padre values ( 1, 'Padre 1' )
insert into padre values ( 2, 'Padre 2' )
insert into hijo values ( 1, 1, 'Hijo 1-1' )
insert into hijo values ( 2, 1, 'Hijo 1-2' )
insert into hijo values ( 3, 1, 'Hijo 1-3' )
insert into hijo values ( 4, 2, 'Hijo 2-1' )
insert into hijo values ( 5, 2, 'Hijo 2-1' )


Gracias de antemano...

Un saludo
 

Leer las respuestas

#1 ulises
16/08/2004 - 16:08 | Informe spam
Una solución sería :

select (case when h.codigo_hijo = q.codigo_hijo then
nombre_padre else NULL end),
nombre_hijo
from padre p
left join hijo h on ( p.codigo_padre = h.codigo_padre )
left join
( select codigo_padre, min(codigo_hijo) as codigo_hijo
from hijo
group by codigo_padre ) q on ( p.codigo_padre =
q.codigo_padre )

Saludos,
Ulises

Hola Grupo,
tengo dos tablas una padre y una hija (relación 1:N)
habría alguna manera de hacer que en una sentencia me


devuelva los registros
de la siguiente manera:

Padre Hija

padre1 Hijo 1-1
NULL Hijo 1-2
NULL Hijo 1-3
padre2 Hijo 2-1
NULL Hijo 2-1

Os envío el script de las tablas:
create table padre ( codigo_padre int primary key,
nombre_padre varchar(20) )
create table hijo ( codigo_hijo int primary key,
codigo_padre int,
nombre_hijo varchar(20) )
insert into padre values ( 1, 'Padre 1' )
insert into padre values ( 2, 'Padre 2' )
insert into hijo values ( 1, 1, 'Hijo 1-1' )
insert into hijo values ( 2, 1, 'Hijo 1-2' )
insert into hijo values ( 3, 1, 'Hijo 1-3' )
insert into hijo values ( 4, 2, 'Hijo 2-1' )
insert into hijo values ( 5, 2, 'Hijo 2-1' )


Gracias de antemano...

Un saludo

Preguntas similares