Announcement

Collapse
No announcement yet.

2 Tabellen: alles aus der 1., alles aus der 2., dazu noch Summe aus beiden!?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2 Tabellen: alles aus der 1., alles aus der 2., dazu noch Summe aus beiden!?

    Hallo,

    ich bin langsam am verzweifeln... Irgendwie klappt mein JOIN nicht.
    Ich habe 2 Tabellen mit folgendem Aufbau/Inhalt:

    Tabelle 1:
    Hersteller-ID, Menge
    --------------------
    10, 34.800000
    11, 40.000000
    15, 23.900000


    Tabelle 2:
    Hersteller-ID, Menge
    --------------------
    10, 50.000000
    13, 12.000000
    15, 10.000000



    Es gibt Datensätze in Tab1, es gibt Datensätze in Tab2, es gibt aber auch Datensätze die sowohl in Tab1 als auch in Tab2 vorkommen.
    Ich möchte jetzt gern ein Select, das mir ALL Datensätze selektiert und dabei die Datensätze, die in beiden Tabellen vorkommen, addiert.

    Das Ergebnis müsste demnach so aussehen:

    Tabelle 3:
    Hersteller-ID, Menge
    --------------------
    10, 84.800000
    11, 40.000000
    13, 12.000000
    15, 33.900000


    Ich habe es schon mit einem Join versucht und dann gruppiert, aber da werden nur die Datensätze genommen, die in beiden Tabellen vorkommen. Bei einem Left-Join ebenfalls nur die, die in der 1. Tabelle stehen...

    Ich komm einfach nicht weiter... habt ihr einen Tipp?!

    Viele Grüße,


    Tim

  • #2
    Hallo Tim,

    da die beiden Tabellen keine Relation untereinander haben, kommst Du mit einem JOIN nicht weiter.
    Wenn Du die Tabellen kombinieren willst, heisst das Zauberwort hier eher UNION

    [highlight=SQL]
    CREATE TABLE #T1
    ( HerID int,
    Menge money);

    CREATE TABLE #T2
    ( HerID int,
    Menge money);
    GO

    INSERT INTO #T1 VALUES (10, 34.800000);
    INSERT INTO #T1 VALUES (11, 40.000000);
    INSERT INTO #T1 VALUES (15, 23.900000);
    GO
    INSERT INTO #T2 VALUES (10, 50.000000);
    INSERT INTO #T2 VALUES (13, 12.000000);
    INSERT INTO #T2 VALUES (15, 10.000000);
    GO
    SELECT HerID, SUM(Menge) AS SumMenge
    FROM (SELECT HerID, Menge FROM #T1
    UNION ALL
    SELECT HerID, Menge FROM #T2) AS Qry
    GROUP BY HerID
    GO
    DROP TABLE #T1;
    DROP TABLE #T2;
    [/highlight]

    Ergebnis:
    [highlight=Text]HerID SumMenge
    ----------- ---------------------
    10 84,80
    11 40,00
    13 12,00
    15 33,90

    (4 Zeile(n) betroffen)[/highlight]
    Syntax müsstest Du ggf. an die von Dir verwendete DBMS anpassen.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Originally posted by timb83 View Post
      Ich habe es schon mit einem Join versucht und dann gruppiert, aber da werden nur die Datensätze genommen, die in beiden Tabellen vorkommen. Bei einem Left-Join ebenfalls nur die, die in der 1. Tabelle stehen...

      Ich komm einfach nicht weiter... habt ihr einen Tipp?!
      FULL JOIN:
      [HIGHLIGHT="SQL"]CREATE TABLE #T1( HerID int, Menge money);
      CREATE TABLE #T2( HerID int, Menge money);
      INSERT INTO #T1 SELECT 10, 34.8 UNION SELECT 11, 40.0 UNION SELECT 15, 23.9;
      INSERT INTO #T2 SELECT 10, 50.0 UNION SELECT 13, 12.0 UNION SELECT 15, 10.0;

      SELECT ISNULL (#t1.HerID, #T2.HerID) AS HerID
      , ISNULL (#t1.Menge, 0)
      + ISNULL (#T2.Menge, 0) AS Menge
      FROM #T1
      FULL JOIN #T2 ON #T1.HerID = #T2.HerID

      DROP TABLE #T1;
      DROP TABLE #T2; [/HIGHLIGHT]ergibt
      Code:
      HerID       Menge
      ----------- ---------------------
      10          84,80
      11          40,00
      15          33,90
      13          12,00

      Comment


      • #4
        Hallo,

        vielen Dank für den Tipp - hat super funktioniert!!!

        MfG Tim

        Comment

        Working...
        X