phpbar.de logo

Mailinglisten-Archive

AW: AW: AW: Kaskadierte join's

AW: AW: AW: Kaskadierte join's

Wolfgang Hauck mysql-de_(at)_lists.bttr.org
Thu, 24 Oct 2002 13:43:58 +0200


Hi Svetoslav,

>alles klar:

>1.KUNDENNUMMER ist eindeutig
>2.Haupttabelle entaelt Personen mit Kundennummern (eindeutig), die beiden
>Untertabellen enthalten Konten aus verschiedenen Bereichen zu diesen 
Personen
>mit Kontonummer (eindeutig) und Kundennummer (also table_1.f01 und 
table_2.f00) die den bezug zur Haupttabelle herstellen
>(also mehrmals auftreten koennen)
>3. Somit besteht kein zwingender Bezug zwischen den Untertabellen,
>vielmehr stellen diese Untermengen der grossen Menge Konten (die es leider 
in einer einzigen Tabelle nicht gibt)

Genau hier liegt dein Problem:

Ich nehme mal an:

main_table:
1	kunde

table_1:
1	1	1000
2	1	1000

table_2:
1	1	500
2	1	500
3	1	500

Da soll dann ne Summe von 3500 rauskommen?

Bei deinem Join passiert folgendes:

DS	main_table_id	table_1_id	table_2_id
1	1		1		1
1	1		1		2
1	1		1		3
1	1		2		1
1	1		2		2
1	1		2		3

Wenn du dann so deine Summe ausrechnest erhälts du 9000. Da jetzt aber hier 
kein Zusammenhang zwischen den beiden Tabellen table_1 und table_2 besteht 
können auch keine Filter greifen. Auch ein gruppieren hilft da nichts, da 
die Query die DS völlig falsch zusammensetzt. Das nächste Problem ist das 
die einzelen Teiltabellen unterschiedliche Datenmengen enthalten. Je mehr 
Daten in den einzelnen Tabellen drinstehen um so grösser wird die 
Summendifferenz. Da bleibt dir nichts anderes übrig als das über zwei 
Querys zu lösen oder du legst eine Temporärtabelle an, die table_1 und 
table_2 merged und wertest diese dann aus.

>4. Die Summenfunktionen beziehen sich auf Felder (table_1.f07 etc.), die 
z. b. Salden enthalten


>  (SUM(ABS(table_1.f07))+SUM(ABS(table_2.f05)))/1000 AS summe_1,
>  SUM(ABS(table_2.f03))/1000 AS summe_2
>
> Hier muss ein Bezug zwischen table_1 und table_2 bestehen, welche?
>

MFG Wolfgang

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



php::bar PHP Wiki   -   Listenarchive