none
Abfrage aus 2 Tabellen nach User/Datum

    Frage

  • Hallo zusammen,

    ich habe gerade folgendes Problem:

    In meiner Datenbank habe ich folgende zwei Tabellen:

    tblCallsSum tblRetoursum
    ID ID
    intUser intUser
    datDate datDate
    intRetour intCalls

    Diese Tabellen kommen jeweils von der tblCalls oder tblRetour. Hier habe ich nur das Datum Gruppiert und die Anzahl der Datensätze werden in intRetour und intCalls angezeigt.

     Nun möchte ich mir eine Abfrage erstellen die wie folgt ausiehst:

    intUser | datDate | intCalls | intRetour

    Jedoch habe ich das Problem, dass nicht für jedes Datum eine Call- und Retour-Zahl vorliegt.

    Beispiel

    tblCallsSum
    01 | user1 | 01.12.2011 | 5
    02 | user1 | 03.12.2011 | 7
    03 | user2 | 04.12.2011 | 3

    tblRetourSum
    01 | user1 | 01.12.2011 | 1
    02 | user1 | 02.12.2011 | 3
    03 | user2 | 04.12.2011 | 4

    Und mein erwartetes Ergebnis:

    user1 | 01.12.2011 | 5 | 1
    user1 | 02.12.2011 | 0 | 3
    user1 | 03.12.2011 | 7 | 0
    user2 | 04.12.2011 | 3 | 4

    Wenn ich jetzt die Verknüpfungseigenschaft
    1: nur die Datensätze aus beiden - fehlen mir der 02. und 03.12.2011;
    2: ALLE aus tblCallsSum nehmen - fehlt mir der 02.12.2011;
    3: ALLE aus tblRetourSum - fehlt mir der 03.12.2011

    Gibt es hierfür eine Lösung?

    Danke für Eure Hilfe

    Mike

    Montag, 5. Dezember 2011 12:04

Antworten

  • Hallo,

    Mike Berger wrote:

    tblCallsSum
    01 | user1 | 01.12.2011 | 5
    02 | user1 | 03.12.2011 | 7
    03 | user2 | 04.12.2011 | 3

    tblRetourSum
    01 | user1 | 01.12.2011 | 1
    02 | user1 | 02.12.2011 | 3
    03 | user2 | 04.12.2011 | 4

    Und mein erwartetes Ergebnis:

    user1 | 01.12.2011 | 5 | 1
    user1 | 02.12.2011 | 0 | 3
    user1 | 03.12.2011 | 7 | 0 user2 | 04.12.2011 | 3 | 4

    Probier mal:

    SELECT T1.intUser, T1.datDate, A.intRetour, B.intCalls
    FROM (
        ( SELECT DISTINCT intUser, datDate FROM tblCallsSum
            UNION
            SELECT DISTINCT intUser, datDate FROM tblRetourSum ) AS T1
    LEFT JOIN tblCallsSum AS A ON T1.datDate = A.datDate )
    LEFT JOIN tblRetourSum AS B ON T1.datDate = B.datDate

    Wenn du unbedingt die 0 sehen willst, musst du statt A.intRetour
    Nz(A.intRetour,0) schreiben, gleiches gilt fuer B.intCalls.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Dienstag, 6. Dezember 2011 12:07
    Moderator

Alle Antworten

  • Hallo,

    Mike Berger wrote:

    tblCallsSum
    01 | user1 | 01.12.2011 | 5
    02 | user1 | 03.12.2011 | 7
    03 | user2 | 04.12.2011 | 3

    tblRetourSum
    01 | user1 | 01.12.2011 | 1
    02 | user1 | 02.12.2011 | 3
    03 | user2 | 04.12.2011 | 4

    Und mein erwartetes Ergebnis:

    user1 | 01.12.2011 | 5 | 1
    user1 | 02.12.2011 | 0 | 3
    user1 | 03.12.2011 | 7 | 0 user2 | 04.12.2011 | 3 | 4

    Probier mal:

    SELECT T1.intUser, T1.datDate, A.intRetour, B.intCalls
    FROM (
        ( SELECT DISTINCT intUser, datDate FROM tblCallsSum
            UNION
            SELECT DISTINCT intUser, datDate FROM tblRetourSum ) AS T1
    LEFT JOIN tblCallsSum AS A ON T1.datDate = A.datDate )
    LEFT JOIN tblRetourSum AS B ON T1.datDate = B.datDate

    Wenn du unbedingt die 0 sehen willst, musst du statt A.intRetour
    Nz(A.intRetour,0) schreiben, gleiches gilt fuer B.intCalls.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Dienstag, 6. Dezember 2011 12:07
    Moderator
  • Hallo Peter,

    erst hatte ich eine Fehlermeldung, aber ich hatte etwas falsches geschrieben. Nun funktioniert es sehr gut.

    Danke Dir

    Mike

    Sonntag, 11. Dezember 2011 21:47