Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/01/2013, 17:02
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Diseño de base de datos sencillo

No puedes agrupar porque seguirian saliendo repetidos, para ponerlos en 2 columnas necesitarias saber si el aval es el 1 o el 2, y como sabria eso???

Código SQL:
Ver original
  1. CREATE TABLE #cliente(
  2. id INT,
  3. nombre VARCHAR(20)
  4. )
  5.  
  6. CREATE TABLE #aval(
  7. id INT,
  8. nombre VARCHAR(20)
  9. )
  10.  
  11. DROP TABLE #relacion
  12. CREATE TABLE #relacion
  13. (
  14. id_cliente INT,
  15. id_aval INT,
  16. num_aval INT
  17. )
  18.  
  19. INSERT INTO #cliente VALUES (1,'Juan')
  20. INSERT INTO #cliente VALUES (2,'Pedro')
  21. INSERT INTO #cliente VALUES (3,'Maria')
  22.  
  23. INSERT INTO #aval VALUES (1,'Mario')
  24. INSERT INTO #aval VALUES (2,'Lupe')
  25. INSERT INTO #aval VALUES (3,'Ana')
  26.  
  27. INSERT INTO #relacion VALUES (1,1,1)
  28. INSERT INTO #relacion VALUES (1,2,2)
  29. INSERT INTO #relacion VALUES (2,1,1)
  30. INSERT INTO #relacion VALUES (3,3,1)
  31.  
  32.  
  33. SELECT t2.nombre AS cliente,
  34. CASE WHEN t1.num_aval=1 THEN
  35. t3.nombre END AS aval1,
  36. CASE WHEN
  37. t1.num_aval=2 THEN t3.nombre END AS aval2 INTO #temp
  38. FROM #relacion AS t1
  39. INNER JOIN #cliente AS t2 ON (t1.id_cliente=t2.id)
  40. INNER JOIN #aval AS t3 ON (t1.id_aval=t3.id)
  41.  
  42.  
  43. SELECT t1.cliente,t2.aval1,t3.aval2 FROM #temp AS t1
  44. LEFT JOIN #temp AS t2 ON (t1.cliente=t2.cliente AND t2.aval1 IS NOT NULL)
  45. LEFT JOIN #temp AS t3 ON (t1.cliente=t3.cliente AND t3.aval2 IS NOT NULL)
  46. GROUP BY t1.cliente,t2.aval1,t3.aval2

Si agregamos un campo entero a la relacion(para decir si el aval es 1 o 2) entonces podemos meter un case dentro del query para poder saber si el aval es 1 o 2, pero de todos modos salen valores repetidos, para eso metemos el resultado dentro de una tabla temporal y con esa temporal eliminamos los nulos y lo dejamos todo en un solo renglon :)

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