Daten zusammenfassen

Artecnet

Neuer Benutzer
Beiträge
4
Hallo erstmal,

ich habe 3 Tabellen mit die ich durch eine View in die selbe Struktur gebracht habe. Jetzt muss ich diese nur zu einer Tabelle zusammenfassen.

Das heißt ein Wert kann entweder in Tabelle 1 oder 2 oder 3 vorkommen. Die anderen beiden sind immer NULL.

Wie schaffe ich es das mir ein Datensatz angezeigt wird mit dem Wert aus 1, 2 oder 3 der nicht NULL ist.

Allerdings kann es sein das ein Datensatz nur in Tabelle 1 oder 2 oder 3 steht und in den anderen beiden nicht oder auch nur in 2 oder 3. Aber es gibt immer nur einen Wert.

Vieleicht hat ja einer von euch eine Idee.
 
Werbung:
Hallo erstmal,

ich habe 3 Tabellen mit die ich durch eine View in die selbe Struktur gebracht habe. Jetzt muss ich diese nur zu einer Tabelle zusammenfassen.

Das heißt ein Wert kann entweder in Tabelle 1 oder 2 oder 3 vorkommen. Die anderen beiden sind immer NULL.

Wie schaffe ich es das mir ein Datensatz angezeigt wird mit dem Wert aus 1, 2 oder 3 der nicht NULL ist.

Allerdings kann es sein das ein Datensatz nur in Tabelle 1 oder 2 oder 3 steht und in den anderen beiden nicht oder auch nur in 2 oder 3. Aber es gibt immer nur einen Wert.

Vieleicht hat ja einer von euch eine Idee.


Wenn ich Dich richtig verstehe, hast und willst Du sowas wie:

Code:
test=*# select * from ta;
 a | b | c
---+---+---
 1 |  |
(1 row)

Time: 0,843 ms
test=*# select * from tb;
 a | b | c
---+---+---
  | 2 |
(1 row)

Time: 0,215 ms
test=*# select * from tc;
 a | b | c
---+---+---
  |  | 3
(1 row)

Time: 0,195 ms
test=*# create view view_abc as select * from ta union all select * from tb union all select * from tc;
CREATE VIEW
Time: 8,556 ms
test=*# select * from view_abc ;
 a | b | c
---+---+---
 1 |  |
  | 2 |
  |  | 3
(3 rows)

Time: 0,303 ms
test=*# select sum(a), sum(b), sum(c) from view_abc ;
 sum | sum | sum
-----+-----+-----
  1 |  2 |  3
(1 row)
 
Wie genau sind denn die Datensätze beschaffen, können in Tabelle A und B mit der selben ID unterschiedliche Werte stehen?
 
Danke für die schnelle Antwort.
Das hab ich auch versucht. Leider klaptt das aus irgend einem Grund nicht.

Bei mir sieht das immer noch so aus.

2015_01_07_10_33_49_Mappe1_Excel.png


Und so sollte es aussehen.

2015_01_07_10_36_42_Mappe1_Excel.png
 
Als ID dienen imer Spalte "A + B".

Bei diesem Datensatz ist es so das ich 2 Werte in Tabelle 1 habe wovon einer nicht in den anderen beiden vorkommt.
In Tabelle 2 stehen 6 Werte die auch in 1 und 3 vorkommen.
In Tabelle stehen Werte die auch in 1 und 2 stehen.

Das ist aber nicht immer so. Es ist unterschiedlich wo die Werte stehen.
 
Werbung:
Ich würde Grundsätzlich vieleicht erstmal alle möglichen Datensätze (also Spalten A + B) ermitteln und dann per LEFT JOIN alle vorhandenen Informationen zusammen führen. Etwa so:
Code:
SELECT    t0.*,
        t1.spalte_c AS c,
        t1.spalte_d AS d,
        t2.spalte_c AS e,
        t2.spalte_d AS f,
        t3.spalte_c AS g,
        t3.spalte_d AS h,
FROM    (

SELECT    DISTINCT
        t.spalte_a,
        t.spalte_b
FROM    (

SELECT    spalte_a,
        spalte_b
FROM    tabelle_1
UNION ALL
SELECT    spalte_a,
        spalte_b
FROM    tabelle_2
UNION ALL
SELECT    spalte_a,
        spalte_b
FROM    tabelle_3

        ) t
       
        ) t0
LEFT JOIN tabelle_1 t1
ON        t0.spalte_a = t1.spalte_a
AND        t0.spalte_b = t1.spalte_b
LEFT JOIN tabelle_2 t2
ON        t0.spalte_a = t2.spalte_a
AND        t0.spalte_b = t2.spalte_b
LEFT JOIN tabelle_3 t3
ON        t0.spalte_a = t3.spalte_a
AND        t0.spalte_b = t3.spalte_b
 
Zurück
Oben