Ver Mensaje Individual
  #12 (permalink)  
Antiguo 18/03/2010, 19:53
T3rryMan
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 15 años
Puntos: 1
Respuesta: Unir consultas !!!!!

Cita:
Iniciado por tatis003 Ver Mensaje
Ola!
tengo un problema con tres consultas: cada una es de diferente tabla...

lo que quiero hacer es unir las tres para luego hacer un informe de la resultante.

estas son las consultas :
Código SQL:
Ver original
  1. SELECT id_cil, tip_cil, ref_cil, gran, pes_cil, tara, cil_ent,
  2.  num_plan,tot_pes,nom_gran,(SELECT SUM(pes_cil)FROM Entrega),(SELECT COUNT (id_cil)FROM Entrega)
  3. FROM
  4.   Entrega AS E, Planilla AS P,Granja AS G
  5. WHERE
  6.   E.num_plan = P.id_plan AND E.gran=G.id_gran AND
  7.   P.fec_ent_plan
--------------------------------------------------------------------------------------------------------
Código SQL:
Ver original
  1. SELECT id_cil, tip_cil, ref_cil, gran, pes_cil, tara, cil_ent,            
  2.  num_plan,tot_pes,nom_gran,(SELECT COUNT (id_cil) FROM Vacios)
  3. FROM
  4.   Llenos AS E, Planilla AS P,Granja AS G
  5. WHERE
  6.   E.num_plan = P.id_plan AND E.gran=G.id_gran AND
  7.   P.fec_ent_plan
--------------------------------------------------------------------------------------------------------
Código SQL:
Ver original
  1. SELECT id_cil, tip_cil, ref_cil, gran, pes_cil, tara, cil_vac,            
  2. num_plan,tot_pes,nom_gran,(SELECT COUNT (id_cil) FROM Vacios)
  3. FROM
  4.   Vacios AS E, Planilla AS P,Granja AS G
  5. WHERE
  6.   E.num_plan = P.id_plan AND E.gran=G.id_gran AND
  7.   P.fec_ent_plan

espero que puedan ayudarme...... recuerden que quiero que las tres queden en una sola.... gracias

Hola tatis
Sinceramente no soy fanatico del Union pero como todo tiene su razon de ser y al final lo que haces creas una consulta con 30 reg por ejemplo con 10 campos si le aplicas union debes primero tener otra consulta con 10 campos y el resultado de registros se inserta al final por decir 15 entonces tendriamos 45 registros y 10 columnas para nuestra consulta resultado y si asi sigues uniendo tablas aumentara la cantidad del select como resultado.

En Cambio lo que yo haria quizas no para este caso pero crearia una funcion con N parametros de ingreso y un tipo de resultado que lo ire agregando dentro de mi consulta como un campo adicional pero eso tambien va en funcion al uso o al resultado que se desee.

Hay que distinguir el crecimiento de la consulta ya sea horizontal o Vertical.

como igualas el resultado de la tablas (entrega, lleno y vacios)
P.id_plan no entendia como te darias cuenta en donde empieza el resultado de una u otro union ya que al final toman como nombre de cabecera el cual se coloco en la primera consulta y sinceramente yo no sabria donde empieza o donde termina cada una de las consultas por eso te envio este ejemplo


y mi campoX de las funciones llamadas en el select seria el valor de p.idPlan para tu caso.

Bueno te lo dejo a tu criterio y suerte abajo te dejo mis datos por si tiens cualquier duda.

Código SQL:
Ver original
  1. CREATE FUNCTION f_JalarDatos
  2.     (@tabla INT,
  3.     @tipo INT,
  4.     @valor INT
  5.     )
  6.     RETURN INT
  7.     AS
  8.     BEGIN
  9.        DECLARE @xreturn INT
  10.        IF @tabla=1
  11.         BEGIN
  12.            IF @tipo=1
  13.             SELECT @xreturn= COUNT(*) FROM tabla1 WHERE campo=@valor
  14.            ELSE
  15.             SELECT @xreturn= SUM(*) FROM tabla1 WHERE campo=@valor
  16.             END
  17.        IF @tabla=2
  18.         BEGIN
  19.            IF @tipo=1
  20.             SELECT @xreturn= COUNT(*) FROM tabla2 WHERE campo=@valor
  21.            ELSE
  22.             SELECT @xreturn= SUM(*) FROM tabla2 WHERE campo=@valor
  23.             END
  24.     END
  25.  
  26.  
  27. SELECT idx, campo2, campo3 ,
  28.     dbo.f_JalarDatos(1,1,campoX) AS CantidadX,
  29.     dbo.f_JalarDatos(1,2,campoX) AS SumaX ,
  30.     dbo.f_JalarDatos(2,1,campoX) AS CantidadY,
  31.     dbo.f_JalarDatos(2,2,campoX) AS SumaY ,
  32.     dbo.f_JalarDatos(3,1,campoX) AS CantidadZ,
  33.     dbo.f_JalarDatos(3,2,campoX) AS SumaZ
  34.     FROM tabla1 T1 INNER JOIN TABLA2 T2 ON T1.IDx=T2.IDx WHERE campo=xxxxxxx

www.bitxense.com.pe | Soluciones Informaticas S.A.C. - [email protected]
Cualquier duda soy Jhon Bautista Palomino aqui esta mi correo [email protected] Lima-Peru