phpbar.de logo

Mailinglisten-Archive

AW: Kaskadierte join's

AW: Kaskadierte join's

Koev mysql-de_(at)_lists.bttr.org
Thu, 24 Oct 2002 12:31:30 +0100


Hallo Wolfgang,

vielen dank fuer den hinweis.
das habe ich schon vermutet, nur
wie kann man am besten so erwas loesen ?
etwa so (???):

##
CREATE table_temp_1
(UNIQUE KEY (KUNDENNUMMER))
SELECT table_master.KUNDENNUMMER,
(SUM(ABS(table_1.f07))/1000 AS summe_1_temp1

FROM table_master
LEFT JOIN table_1
 ON table_master.KUNDENNUMMER=table_1.f01

GROUP BY table_master.KUNDENNUMMER;


CREATE table_temp_2
(UNIQUE KEY (KUNDENNUMMER))
SELECT table_master.KUNDENNUMMER,
SUM(ABS(table_2.f05)))/1000 AS summe_1_temp2,
SUM(ABS(table_2.f03))/1000 AS summe_2

FROM table_master
LEFT JOIN table_2
 ON table_master.KUNDENNUMMER=table_2.f00

GROUP BY table_master.KUNDENNUMMER;


SELECT table_master.KUNDENNUMMER,
(table_temp_1.summe_1_temp1+table_temp_2.summe_1_temp2) AS summe_1,
table_temp_2.summe_2

FROM table_master
INNER JOIN table_temp_1
 ON table_master.KUNDENNUMMER=table_temp_1.KUNDENNUMMER
INNER JOIN table_temp_2
 ON table_master.KUNDENNUMMER=table_temp_2.KUNDENNUMMER

GROUP BY table_master.KUNDENNUMMER;
###


Wolfgang Hauck schrieb:

> >Hallo Leute,
>
> >brauche dringend Rat.
>
> >Folgende Abfrage bringt oft bei den Summen (summe_1)
> >das Doppelte, das Dreifache ja sogar manchmal das Vierfache dessen
> >was eigentlich erwartet wird.
>
> >Woran kann dies liegen???
> >(etwas mit den Kaskadierten join's scheint falsch zu sein, oder???)
>
> >###
> >SELECT table_master.KUNDENNUMMER,
> >(SUM(ABS(table_1.f07))+SUM(ABS(table_2.f05)))/1000 AS summe_1,
> >SUM(ABS(table_2.f03))/1000 AS summe_2
>
> >FROM table_master
> >LEFT JOIN table_1
> > ON table_master.KUNDENNUMMER=table_1.f01
> >LEFT JOIN table_2
> > ON table_master.KUNDENNUMMER=table_2.f00
>
> >GROUP BY table_master.KUNDENNUMMER;
> >###
>
> Hi Svetoslav,
>
> Du Joinst bei beiden Untertabellen auf die Mastertabelle, dadurch enstehen Kreuzverkettungen und die sind nicht erwünscht.
>
> Also
>
> ###
> SELECT table_master.KUNDENNUMMER,
> (SUM(ABS(table_1.f07))+SUM(ABS(table_2.f05)))/1000 AS summe_1,
> SUM(ABS(table_2.f03))/1000 AS summe_2
>
> FROM table_master
> LEFT JOIN table_1
>  ON table_master.KUNDENNUMMER=table_1.f01
> LEFT JOIN table_2
>  ON table_1.f01=table_2.f00
>
> GROUP BY table_master.KUNDENNUMMER;
> ###
>
> So müsste es laufen ;-))
>
> MFG Wolfgang
>
> --
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql

--
Dipl.-Ing. Svetoslav Koev
Systementwicklung

Inno Consult GmbH
Comeniusstraße 109
01309 Dresden

Telefon: +49 351 25796-13
Fax:     +49 351 25796-24
http://www.inno-consult.com



-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive