Обсуждение: Re: Combine query views into one SQL string

Поиск
Список
Период
Сортировка

Re: Combine query views into one SQL string

От
"Maik"
Дата:
Its clear, union concat the two results.

But he can also use this join version, if its the intention.

select t1.id, sum(t1.amount), t2.id, sum(t2.amount) from table1 as t1,
table2 as t2 where t1.id=t2.id;

Ciao Maik




Re: Combine query views into one SQL string

От
Nils Zonneveld
Дата:

Maik wrote:
> 
> Its clear, union concat the two results.
> 
> But he can also use this join version, if its the intention.
> 
> select t1.id, sum(t1.amount), t2.id, sum(t2.amount) from table1 as t1,
> table2 as t2 where t1.id=t2.id;
> 

Yeps, thats another way to write an inner join :-)

Mazzel,

Nils

-- 
Alles van waarde is weerloos
Lucebert


Re: Combine query views into one SQL string

От
eimas@lycos.com (Eimas)
Дата:
"Maik" <K.Maik@web.de> wrote in message news:<9na15r$ku4$1@narses.hrz.tu-chemnitz.de>...
> Its clear, union concat the two results.
> 
> But he can also use this join version, if its the intention.
> 
> select t1.id, sum(t1.amount), t2.id, sum(t2.amount) from table1 as t1,
> table2 as t2 where t1.id=t2.id;
> 
> Ciao Maik

This is not right, i wouldnt even bather you if this was the simple
answer.

t1.id=t2.id would mean in doubled or tripled aggregation,
since t1.id and t2.id are not unique, thats why I had to aggregate
them in first Q1, Q2 querires, and link them by ID in the last one.

I don't understand what UNION got to do here. then you probably have
to make three union links of inner, left and right joined tables.

This is not that easy as it seems.
Is there a universal SQL string "expanding" rules, like in math or so?

Thanks


Re: Combine query views into one SQL string

От
yaubi@yaubi.com (Yoann)
Дата:
eimas@lycos.com (Eimas) wrote in message news:<63e57aa8.0109091520.4f975abd@posting.google.com>...
> "Maik" <K.Maik@web.de> wrote in message news:<9na15r$ku4$1@narses.hrz.tu-chemnitz.de>...
> > Its clear, union concat the two results.
> > 
> > But he can also use this join version, if its the intention.
> > 
> > select t1.id, sum(t1.amount), t2.id, sum(t2.amount) from table1 as t1,
> > table2 as t2 where t1.id=t2.id;
> > 
> > Ciao Maik
> 
> This is not right, i wouldnt even bather you if this was the simple
> answer.
> 
> t1.id=t2.id would mean in doubled or tripled aggregation,
> since t1.id and t2.id are not unique, thats why I had to aggregate
> them in first Q1, Q2 querires, and link them by ID in the last one.
> 
> I don't understand what UNION got to do here. then you probably have
> to make three union links of inner, left and right joined tables.
> 
> This is not that easy as it seems.
> Is there a universal SQL string "expanding" rules, like in math or so?
> 
> Thanks


Hi,

I think a got it. Just try :

SELECT DISTINCT t.ID,  (SELECT SUM(amount)   FROM Table1   WHERE ID = t.ID),  (SELECT SUM(amount)   FROM Table2   WHERE
ID= t.ID)
 
FROM Table1 AS t
UNION
SELECT DISTINCT t.ID,  (SELECT SUM(amount)   FROM Table1   WHERE ID = t.ID),  (SELECT SUM(amount)   FROM Table2   WHERE
ID= t.ID)
 
FROM Table2 AS t;

There are in fact two queries : one scaning for the ID's from Table1
and the other from Table2 in order to calcutate the sums for ALL the
ID's.
For each scaned ID, it calculates the corresponding sum in each of the
two tables. If the ID doesn't exist in one table, the sum return a
Null value, but doesn't affect the other.

I hope this query is what you are looking for.
Yoann


Re: Combine query views into one SQL string

От
"Tony Hunt"
Дата:
I don't get it?  What's the difference between an inner-join and an
equijoin?

"Nils Zonneveld" <nils@mbit.nl> wrote in message
news:3B988C82.9C4782E4@mbit.nl...
>
>
> Maik wrote:
> >
> > Its clear, union concat the two results.
> >
> > But he can also use this join version, if its the intention.
> >
> > select t1.id, sum(t1.amount), t2.id, sum(t2.amount) from table1 as t1,
> > table2 as t2 where t1.id=t2.id;
> >
>
> Yeps, thats another way to write an inner join :-)
>
> Mazzel,
>
> Nils
>
> --
> Alles van waarde is weerloos
> Lucebert




Re: Combine query views into one SQL string

От
"Gledatelj"
Дата:
Hy Maik,

you can select it directly from the tables using following sql statement
(but it's same as using views):

select  t1.id, t1.f1, t2.f2
from
(select id, sum(amount) f1 from table1 group by id) t1,
(select id, sum(amount) f2 from table2 group by id) t2
where t1.id = t2.id

but, you must also know that in this way you may not get all the records
(sum of amount of all id-s) if this is your intention, but just sum of
amount of identical id-s (contained in both tables).

Maybe this will help you.


"Eimas" <eimas@lycos.com> wrote in message
news:63e57aa8.0109091520.4f975abd@posting.google.com...
> "Maik" <K.Maik@web.de> wrote in message
news:<9na15r$ku4$1@narses.hrz.tu-chemnitz.de>...
> > Its clear, union concat the two results.
> >
> > But he can also use this join version, if its the intention.
> >
> > select t1.id, sum(t1.amount), t2.id, sum(t2.amount) from table1 as t1,
> > table2 as t2 where t1.id=t2.id;
> >
> > Ciao Maik
>
> This is not right, i wouldnt even bather you if this was the simple
> answer.
>
> t1.id=t2.id would mean in doubled or tripled aggregation,
> since t1.id and t2.id are not unique, thats why I had to aggregate
> them in first Q1, Q2 querires, and link them by ID in the last one.
>
> I don't understand what UNION got to do here. then you probably have
> to make three union links of inner, left and right joined tables.
>
> This is not that easy as it seems.
> Is there a universal SQL string "expanding" rules, like in math or so?
>
> Thanks