Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Sacar nombre de campo

Estas en el tema de Sacar nombre de campo en el foro de SQL Server en Foros del Web. Hola, a ver si me explico: Tengo estas 2 tablas: Tabla Asignaturas Id Nombre Otros_campos 1 Numero1 blablabla 2 Numero2 blablabla 3 Numero3 blablabla 4 ...
  #1 (permalink)  
Antiguo 08/04/2008, 02:32
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Sacar nombre de campo

Hola, a ver si me explico:

Tengo estas 2 tablas:

Tabla Asignaturas

Id Nombre Otros_campos
1 Numero1 blablabla
2 Numero2 blablabla
3 Numero3 blablabla
4 Numero4 blablabla
5 Numero5 blablabla
6 Numero6 blablabla
7 Numero7 blablabla
8 Numero8 blablabla
9 Numero9 blablabla
10 Numero10 blablabla


Tabla Relaciones

Id Relacionado
2 1
2 3
2 4
4 1
5 1
5 2
5 3



La segunda tabla quiere decir que la asignatura con código 2 tiene dentro otras asignaturas(1,3,4,5,6) y estos numeros(campo relacionado) son los códigos de la tabla asignaturas. Es decir quiero conseguir una tabla o vista así:

Id Nombre Otros_campos Nombre_relacion
1 Numero1 blablabla
2 Numero2 blablabla Numero1,Numero3,Numero4
3 Numero3 blablabla
4 Numero4 blablabla Numero1
5 Numero5 blablabla Numero1,Numero2,Numero3
6 Numero6 blablabla
7 Numero7 blablabla
8 Numero8 blablabla
9 Numero9 blablabla
10 Numero10 blablabla


Espero que me hayais entendido.

Muchas Gracias por vuestra dedicacion.

Un saludo!
  #2 (permalink)  
Antiguo 08/04/2008, 07:27
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Re: Sacar nombre de campo

Depende de la Base de Datos que utilices si tienes arrays podrias hacer algo asi:

select a.id, a.nombre, a.otros_campos, ARRAY(aa.nombre)
from asignaturas a
left join relaciones r on r.id = a.id
left join asignaturas aa on aa.id = r.relacionado


Saludos
  #3 (permalink)  
Antiguo 08/04/2008, 09:00
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Sacar nombre de campo

Sql server, voy a probar.

Gracias!
  #4 (permalink)  
Antiguo 09/04/2008, 01:40
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Sacar nombre de campo

no me acepta lo de array?
existe en sql server 2000?

alguna sugerencia?
  #5 (permalink)  
Antiguo 09/04/2008, 09:52
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 19 años, 8 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
  #6 (permalink)  
Antiguo 10/04/2008, 01:40
 
Fecha de Ingreso: julio-2006
Mensajes: 145
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Sacar nombre de campo

Cita:
Iniciado por Thumper Ver Mensaje
Algo asi creo q te podrias servir:

Saludos
Solo te puedo decir 2 palabras:

Muchisimas gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

He tenido que quitar el -1 al len porque sino me cogia un caracter menos.

Lo demas es exactamente lo que queria.

Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:49.