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

Subquery con varios valores

Estas en el tema de Subquery con varios valores en el foro de SQL Server en Foros del Web. Muy buenas, a ver si me pueden solucionar un problemilla. Necesito mostrar unos valores de varias tablas, tengo cinco tablas. Os pongo un ejemplo para ...
  #1 (permalink)  
Antiguo 20/06/2013, 02:36
 
Fecha de Ingreso: junio-2013
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Subquery con varios valores

Muy buenas, a ver si me pueden solucionar un problemilla.

Necesito mostrar unos valores de varias tablas, tengo cinco tablas. Os pongo un ejemplo para que quede más claro.

Tabla 1: idgestor, valores, idacto

Tabla 1-2: idresponsable, nombre, apellido

Tabla 2: idresponsable, idgestor (un gestor puede tener varios responsables)

Tabla 3: idacto, valor

Mi problema es el siguiente, tengo hacer un select que muestre el idgestor, el valor de la tabla 3, y un campo con los valores de la tabla 1-2 que correspondan al idgestor.
Código SQL:
Ver original
  1. /********lo que querría*************/
  2.  
  3. SELECT tabla1.idgestor,tabla3.idacto,/aquí quiero mostrar los nombres y apellidos de la tabla 1-2, separados por comas(apellido,nombre) sabiendo que se puede dar que tengan más de un resultado, por lo que habría que concatenar varios resultados (apellido,nombre apellido,nombre apellido,nombre apellido,nombre )por ejemplo/
  4.  
  5. FROM tabla1
  6.  
  7. INNER JOIN tabla3 ON
  8.  
  9. tabla1.idacto=tabla3.idacto
  10.  
  11. /**********************/
  12.  
  13. /**********lo que intenté para rescatar los valores de la tabla 1-2***********/
  14.  
  15. DECLARE @list VARCHAR(200)
  16. SELECT  @list = COALESCE(@list + '  ', '') +   rtrim(ltrim([tabla2].apellido + ', ' + [tabla2].nombre ))
  17. FROM [GAMAIIB].[dbo].[tabla2]
  18. AND [tabla3].[idResponsable] IN (
  19. SELECT DISTINCT [tabla 1-2].[idResponsable]
  20. FROM [GAMAIIB].[dbo].[tabla 1-2]
  21. INNER JOIN [tabla1].[idgestor] ON
  22. [tabla1-2].idGestor = [tabla1].idGestior)
  23.  
  24. print @list --Aquí obtengo los valores
Hice esto pero no se como insertarlo y que vaya bien con la primera select. No sé si van por aquí los tiros o no.

Saludos y muchas gracias

Última edición por gnzsoloyo; 20/06/2013 a las 06:22
  #2 (permalink)  
Antiguo 20/06/2013, 12:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Subquery con varios valores

explicate mejopr
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 20/06/2013, 23:58
 
Fecha de Ingreso: junio-2013
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Subquery con varios valores

Lo que deseo es obtener con un select varios campos, y dos de estos campos deben devolver varios valores, estos los quiero anidar para que salgan todos juntos en un mismo campo.

Tablas:
Código MySQL:
Ver original
  1. INSERT INTO tabla1(idtabla1)
  2.   (1)
  3. INSERT INTO tabla2(idtabla2, idresponsable)
  4.   (1, 4)
  5.  
  6. INSERT INTO tabla3(idresponsable, idtabla2, nombre, apellido1, apellido2)
  7.  
  8.   (1, 1, antonio, manuel, perez),
  9.   (2, 1, pep, garc, luis),
  10.   (3, 1, jon, tron, blas),
  11.   (4, 1, anton, prru ,blis)
  12.  
  13. INSERT INTO tabla3(idtabla3,idtabla1, nombre)
  14.  
  15.   (1, 1, antonio, manuel),

Me gustaría ahora que el resultado fuera el siguiente en 4 columnas para un mismo registro:

-> 1, 1, (antonio, manuel perez pep, garc luis jon,tron blas, anton, prru blis), anonio

Gracias por responder, un saludo

Última edición por gnzsoloyo; 21/06/2013 a las 06:04
  #4 (permalink)  
Antiguo 21/06/2013, 08:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Subquery con varios valores

con un coalesce lo obtienes....no entiendo los valores qeu pones pero para obtener el resultado que necesitas puedes hacer esto:

Código SQL:
Ver original
  1. INSERT INTO tabla3(idresponsable, idtabla2, nombre, apellido1, apellido2)
  2.  
  3. VALUES
  4.   (1, 1, 'antonio', 'manuel', 'perez'),
  5.   (2, 1, 'pep', 'garc', 'luis'),
  6.   (3, 1, 'jon', 'tron', 'blas'),
  7.   (4, 1, 'anton', 'prru' ,'blis')
  8.  
  9.  
  10.  SELECT 1,1,(SELECT dbo.fn_concat()) AS cadena  FROM tabla3
  11.  
  12. CREATE FUNCTION fn_concat()
  13. RETURNS VARCHAR(800)
  14. AS
  15. BEGIN
  16. DECLARE @Names VARCHAR(8000)  
  17. SELECT @Names = COALESCE(@Names + ', ', '') + nombre + ' ' + apellido1 + ' ' + apellido2 FROM tabla3
  18. --print @names
  19. RETURN @Names
  20. END

ya en la funcion puedes mandar un parametro como el id o lo que necesites pero adecuandolo a tu problema

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: insert, join, select, subquery, tabla
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 03:39.