PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   2 Tabellen zusammenfassen. Problem! (http://www.selfphp.de/forum/showthread.php?t=12398)

basti123456 01.02.2006 14:05:53

2 Tabellen zusammenfassen. Problem!
 
Hallo,

ich möchte 2 Tabellen in einer Verdichtungstabelle zusammen fassen. Und habe dabei ein Problem.
Die Tabellen haben den gleichen Aufbau und auch die Verdichtungstabelle hat die gleiche Struktur.
Es ist eine ID vorhanden, sowie zu dieser ID jeweils eine variable Anzahl und eine variable Summe, sowie einige andere Spalten.

Folgendes will ich tun:

In der ersten Abfrage suche ich alle Zeilen aus den beiden Tabellen raus, wo die IDs gleich sind, addiere für die jeweilige ID die Anzahl und die Summe, und schreibe sie dann in die Verdichtungstabelle.
(Das klappt soweit alles)

Code:

    insert into vd_win_stat_all
    select        a.okz, @abr_per, (a.anz + o.anz) as anz, (a.summe + o.summe) as summe, a.class
    from        #all a, #odd o
    where        a.okz=o.okz



Nun möchte ich zusätzlich aus den beiden anfänglichen Tabellen alle Datensätze in die Verdichtungstabelle schreiben, wo die ID der beiden Tabellen nicht gleich ist.

Code:

    insert into vd_win_stat_all
    select        a.okz, @abr_per, a.anz,a.summe, a.class
    from        #all a, #odd o
    where        a.okz<>o.okz
    group by a.okz, a.anz, a.summe, a.class


Wenn ich aber das mache, habe ich in meiner Verdichtungstabelle zig-mal Datensätze mit der selben ID drin.
Was kann ich da tun?!?!?!


Sprich, ich möchte im Endeffekt eine Verdichtungstabelle haben in der alle IDs aus den beiden Tabellen drinstehen und das jeweils nur einmal. Sollte ein und die selbe ID in beiden Tabellen auftauchen, sollen die Spalten anzahl und summe addiert werden und als ein datensatz in die Verdichtungstabelle geschrieben werden.

diver-network 01.02.2006 18:10:44

AW: 2 Tabellen zusammenfassen. Problem!
 
Hi,

kurz und knapp:
Du kannst in diesem Fall nichts tun.
Grund:
Bei allen Datensätzen (bis auf ein paar wenige) wird die ID der Tabelle 1 ungleich einer ID in der Tabelle 2 sein.
Lösungsvorschlag:
Überleg' Dir zuerst eimal, was Du von der Logik her haben möchtest und über welche eindeutigen Werte (z.B. Spalte @abr_per) Du zumindest eine Zuordnung des wertes aus der Tabelle 1 zum passenden Wert aus der Tabelle 2 bekommst. Bei dieser Zuordnung kann natürlich die ID unterschiedlich sein (muß aber nicht).

Noch ein Tip:
Zwei Tabellen verknüpft man per SQL normalerweise mit einem (INNER) JOIN und nicht über ... FROM tabelle1 AS t1, tabelle2 AS t2 WHERE t1.wert = t2.wert.....
Grund: Es entsteht mit der WHERE Methode ein kartesisches Produkt.

HTH,

Andy

basti123456 02.02.2006 17:22:46

AW: 2 Tabellen zusammenfassen. Problem!
 
Gut, mit dem Joinen isses kein Problem.

Die Logik, was ich haben will is ja da. Ich will aus den beiden bestehenden Tabellen eine einzige machen. Dabei soll, wenn die Schlüssel (hier okz) beider tabellen gleich sind, die anzahl (anz) und summe addiert werden und als ein datensatz in die verdichtungstabelle geschrieben werden. Die Datensätze wo der Schlüssel (okz) nur einmal in einer der beiden Tabellen vorkommt, sollen so wie sie sind in die verdichtungstabelle übernommen werden.


kann man im SQL-Server-Enterprise-Manager beim Erstellen von Prozeduren auch mit Array arbeiten ???

diver-network 02.02.2006 18:19:48

AW: 2 Tabellen zusammenfassen. Problem!
 
Hi,

ok, ich versteh' schon, was Du willst.
Solange Du aber Deine Tabellen über tab1.id <> tab2.id verknüpfst wirst Du immer zig gleiche IDs als Ergebnis bekommen.

Meine, allerdings noch nicht bis zum Ende durchdachte Idee:

Schritt 1:
Hole Dir alle Werte aus Tabelle1, deren Ids nicht in Tabelle2 sind
(SELECT [DISTINCT] t1.* FROM tabelle1 AS t1 WHERE t1.id NOT IN (SELECT [DISTINCT] t2.id FROM tabelle2 AS t2)
und füll diese Werte in eine neue Tabelle ein.

Schritt 2:
Wiederhole Schritt 1 mit den umgekehrten Tabellennamen.

Dies solltest Du auch in einer Stored Procedure machen können.

Bitte überlege selber noch mal, ob dieser Ansatz wirklich passt und arbeite in KEINEM FALL mit der produktiven Endtabelle!


Das mit den Arrays weiß ich leider auch nicht, so gut kenn' ich mich im SQL Server auch nicht aus o((

HTH,

Andy

P.S.: Dies ist ein PHP und MySQL Forum, kein M$-SQL Server Forum ;-)

basti123456 03.02.2006 09:01:08

AW: 2 Tabellen zusammenfassen. Problem!
 
ja, ich weiß, aber ich weiß auch, dass ich hier immer schnelle und gute Antworten bekomme.

Danke für die Antworten, jetzt klappt es so, wie ich es mir vorgestellt habe.


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:33:15 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.