Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/04/2008, 09:52
Avatar de Thumper
Thumper
 
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 20 años, 4 meses
Puntos: 6
Re: Sacar nombre de campo

Algo asi creo q te podrias servir:

Cita:
CREATE DATABASE PRUEBA_SQL
GO

USE PRUEBA_SQL
GO

CREATE TABLE Asignatura( INTID INT,
VARNOMBRE VARCHAR(100))

CREATE TABLE Relacion( INTID INT,
INTRELACIONADO VARCHAR(100))

INSERT INTO Asignatura VALUES( 1, 'Numero1' )
INSERT INTO Asignatura VALUES( 2, 'Numero2' )
INSERT INTO Asignatura VALUES( 3, 'Numero3' )
INSERT INTO Asignatura VALUES( 4, 'Numero4' )
INSERT INTO Asignatura VALUES( 5, 'Numero5' )
INSERT INTO Asignatura VALUES( 6, 'Numero6' )
INSERT INTO Asignatura VALUES( 7, 'Numero7' )
INSERT INTO Asignatura VALUES( 8, 'Numero8' )
INSERT INTO Asignatura VALUES( 9, 'Numero9' )
INSERT INTO Asignatura VALUES( 10, 'Numero10' )

INSERT INTO Relacion VALUES( 2, 1 )
INSERT INTO Relacion VALUES( 2, 3 )
INSERT INTO Relacion VALUES( 2, 4 )
INSERT INTO Relacion VALUES( 4, 1 )
INSERT INTO Relacion VALUES( 5, 1 )
INSERT INTO Relacion VALUES( 5, 2 )
INSERT INTO Relacion VALUES( 5, 3 )


CREATE FUNCTION DBO.OBTENERCADENA( @INTID INT)
RETURNS VARCHAR(8000)
BEGIN
DECLARE @VARCHAR VARCHAR(8000)
SET @VARCHAR = ''
SELECT @VARCHAR = @VARCHAR + A.VARNOMBRE + ','
FROM Asignatura A INNER JOIN Relacion R
ON A.INTID = R.INTRELACIONADO
WHERE R.INTID = @INTID

IF @VARCHAR <> ''
IF RIGHT(@VARCHAR,1) = ','
SET @VARCHAR = SUBSTRING(@VARCHAR, 0, LEN(@VARCHAR) - 1 )
RETURN @VARCHAR
END

SELECT INTID, VARNOMBRE, NOMBRERELACION = DBO.OBTENERCADENA(INTID)
FROM Asignatura

Saludos
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD