Cita:
Iniciado por tatis003 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 originalSELECT id_cil, tip_cil, ref_cil, gran, pes_cil, tara, cil_ent,
num_plan,tot_pes,nom_gran,(SELECT SUM(pes_cil)FROM Entrega),(SELECT COUNT (id_cil)FROM Entrega)
FROM
Entrega AS E, Planilla AS P,Granja AS G
WHERE
E.num_plan = P.id_plan AND E.gran=G.id_gran AND
P.fec_ent_plan
--------------------------------------------------------------------------------------------------------
Código SQL:
Ver originalSELECT id_cil, tip_cil, ref_cil, gran, pes_cil, tara, cil_ent,
num_plan,tot_pes,nom_gran,(SELECT COUNT (id_cil) FROM Vacios)
FROM
Llenos AS E, Planilla AS P,Granja AS G
WHERE
E.num_plan = P.id_plan AND E.gran=G.id_gran AND
P.fec_ent_plan
--------------------------------------------------------------------------------------------------------
Código SQL:
Ver originalSELECT id_cil, tip_cil, ref_cil, gran, pes_cil, tara, cil_vac,
num_plan,tot_pes,nom_gran,(SELECT COUNT (id_cil) FROM Vacios)
FROM
Vacios AS E, Planilla AS P,Granja AS G
WHERE
E.num_plan = P.id_plan AND E.gran=G.id_gran AND
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 originalCREATE FUNCTION f_JalarDatos
(@tabla INT,
@tipo INT,
@valor INT
)
RETURN INT
AS
BEGIN
DECLARE @xreturn INT
IF @tabla=1
BEGIN
IF @tipo=1
SELECT @xreturn= COUNT(*) FROM tabla1 WHERE campo=@valor
ELSE
SELECT @xreturn= SUM(*) FROM tabla1 WHERE campo=@valor
END
IF @tabla=2
BEGIN
IF @tipo=1
SELECT @xreturn= COUNT(*) FROM tabla2 WHERE campo=@valor
ELSE
SELECT @xreturn= SUM(*) FROM tabla2 WHERE campo=@valor
END
END
SELECT idx, campo2, campo3 ,
dbo.f_JalarDatos(1,1,campoX) AS CantidadX,
dbo.f_JalarDatos(1,2,campoX) AS SumaX ,
dbo.f_JalarDatos(2,1,campoX) AS CantidadY,
dbo.f_JalarDatos(2,2,campoX) AS SumaY ,
dbo.f_JalarDatos(3,1,campoX) AS CantidadZ,
dbo.f_JalarDatos(3,2,campoX) AS SumaZ
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