SQL - UN VERDADERO RETO (para un experto)

 
Vista:

UN VERDADERO RETO (para un experto)

Publicado por jj (1 intervención) el 16/05/2002 16:50:49
Ok...
hola comunidad... tengo este problema... dignp para un experto

tengo:

tablaA=
#esclavo (k)
nombre (fk)
direccion

tablaB
#esclavo (k)
edad
telefono

tablaC
nombre (fk)
amigo
sexo

Como puedes ver tablaC.nombre es llave foranea de tablaA

tablaC.amigos, en cada registro hay un nombre y cada esclavo tiene muchos
amigos

Cuando en tablaC están así

nombre | amigo | sexo
pancho pancha f
pancho lola f
el chale el divino m

tons, hay alguna forma de que, por medio de una sentencia de SQL pueda sacar
este reporte:

#esclavo | nombre | direccion | edad | amigos

y por cada #esclavo te de solo un registro, pero en ese mismo (un registro)
muestre en el campo de amigos... muchos nombres.. o sea

#esclavo | nombre | direccion | edad | amigos
001 pancho av. tec 11 11 pancha, lola, paca, la
pelos, el mofles
003 el chale|sur 111#2| 50 el divino, el matón, el
justiciero

Gracias
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

RE:UN VERDADERO RETO (para un experto)

Publicado por vladimir (8 intervenciones) el 18/05/2002 03:31:19
--Espero te sea util, solo tienes que homogar los tipos de datos

DECLARE @Xesclavo int
DECLARE @Xnombre char(10)
DECLARE @XamigoSS varchar (6000)
DECLARE @Xamigo varchar (6000)
set @Xesclavo = 0
set nocount on

SELECT A.esclavo, A.nombre, A.direccion, B.edad, space(200) as amigoSS
INTO #AMGS
FROM A,B
WHERE A.esclavo is null

while 1 = 1 -- esto es para que se meta en un loop con lo esclavos
BEGIN
select top 1 @Xesclavo = esclavo, @Xnombre = nombre
from A
where esclavo > @Xesclavo
order by esclavo

if @@rowcount = 0
break
set @XamigoSS = ''
set @Xamigo = ''
WHILE 2=2 -- esto es para que se meta en un loop con los amigos
BEGIN
select top 1 @Xamigo = amigo
from C
where nombre = @Xnombre
AND amigo > @Xamigo
order by nombre

if @@rowcount = 0
break
set @XamigoSS = @XamigoSS + @Xamigo + ', '
END
INSERT INTO #AMGS
SELECT A.esclavo, A.nombre, A.direccion, B.edad, @XamigoSS
FROM A,B
WHERE A.esclavo = B.esclavo
AND A.esclavo = @Xesclavo
END
SELECT * FROM #AMGS
DROP TABLE #AMGS
go
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