If you only interested in getting the overall sum from the child tables you
could try the following:

1)

Change your child create statements to:

CREATE TABLE child1
(
auto_nr int(11) unsigned zerofill NOT NULL,
link int(11) unsigned ,
value int(11),
PRIMARY KEY auto_nr(auto_nr),
KEY link1_key(link)
)

CREATE TABLE child2
(
auto_nr int(11) unsigned zerofill NOT NULL,
link int(11) unsigned ,
value int(11),
PRIMARY KEY auto_nr(auto_nr),
KEY link2_key(link)
)

2)


Then create a merge table like:

CREATE TABLE childMerge (
auto_nr int(11) unsigned zerofill NOT NULL,
link int(11) unsigned ,
value int(11),
KEY auto_nr(auto_nr),
KEY link_key(link)
) TYPE=MERGE UNION=(child1,child2);

3)

The the one statement then becomes:

Select master.link, max(dat) as m_dat, sum(childMerge.value)
from
master
left join childMerge using (link)
group by master.link


KEY is a synonym for INDEX

Regards
Dan

> -----Original Message-----
> From: Alvis [mailto:[EMAIL PROTECTED]]
> Sent: Friday, 22 February 2002 2:44 p.m.
> To: [EMAIL PROTECTED]
> Subject: Can I do it with single query in mysql?
>
>
> Hello all,
>
> Suppose I have 3 tables,
> 1. master (auto_nr, link, dat)
>
> CREATE TABLE master
> (
> auto_nr int(11) unsigned zerofill NOT NULL,
> link int(11) unsigned zerofill NOT NULL,
> dat DATE  NOT NULL,
> PRIMARY KEY auto_nr(auto_nr),
> KEY link_key(link)
> )
> 2. child1 (auto_nr, link1, value1)
>
> CREATE TABLE child1
> (
> auto_nr int(11) unsigned zerofill NOT NULL,
> link1 int(11) unsigned ,
> value1 int(11),
> PRIMARY KEY auto_nr(auto_nr),
> KEY link1_key(link1)
> )
>
> 3. child2 (auto_nr, link2, value2)
>
> CREATE TABLE child2
> (
> auto_nr int(11) unsigned zerofill NOT NULL,
> link2 int(11) unsigned ,
> value2 int(11),
> PRIMARY KEY auto_nr(auto_nr),
> KEY link2_key(link2)
> )
>
> At the moment I use temporary tables following way:
> CREATE TEMPORARY table temp1
> Select link, max(dat) as m_dat, sum(value1) as val1
> from
> master
> left join child1 on master.link=child1.link1
> group by link
>
> CREATE TEMPORARY table temp2
> Select link, sum(value2) as val2
> from
> master
> left join child2 on master.link=child2.link2
> group by link
> //OK. Actually I use 2 steps to build one temporary
> table:
> a. Full CREATE TEMPORARY TABLE statement using KEY (or
> maybe better INDEX???) if needed.
> b. INSERT INTO to populate created table.
>
> FINALLY:
> Select m_dat, temp1.link, val1, val2
> from temp1, temp2
> where temp1.link=temp2.link
>
>  Can I do it with one select statement in mysql?
>
> Sorry to say, I have to create up to 12 different
> temporary tables to get result sets for everyday use.
> As you may guess execution of bunch of queries takes
> time (up to 1 min) and may be considered as rather
> messy. Ive come to conclusion that SQL optimization
> with MySql (using temporary tables) is time consuming.
> IMHO I need feature called CREATE VIEW , but
> perhaps I have to learn some of features of standard
> SQL (i.e. progressive & extensive use of different
> JOIN types;-) so, really good SQL books regarding this
> subject; your recommendations.
>
> My database is not large (50 tables, max 25 columns
> per table, currently overall amount ~50Mb plus about
> 0.2-1Mb each day). I try to stick with SQL92 and keep
> my client code independent from particular SQL server
> implementation; maybe someday I have to shift to other
> back-end, so I want to make migration to different
> back-end as easy as possible. Speed penalty is
> inescapable.
>
> My system configuration is Compaq PROLIANT ML370,
> 128Mb RAM, 933 Mhz PIII,  RedHat Linux 7.1. Its dual
> processor system, so some hardware upgrade is quite
> possible. I have small number of clients (1-20). Any
> suggestions for optimal MySql server configuration?
>
>
> Any help will be appreciated.
>
> p.s.
>  Whats the difference between KEY and INDEX in CREATE
> TABLE syntax (any +/- effect on JOIN)?
>
> Regards,
> Alvis
>
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Sports - Coverage of the 2002 Olympic Games
> http://sports.yahoo.com
>
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
>


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to