tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
19
ZUGRIFFE
1034
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hallöchen Leute,

    ich habe da ein Problem mit einer SQL-Abfrage.
    Ich habe in meiner Access Datenbank folgende Tabelle:

    WerWoWannWieviel:
    Datum
    Nachname
    Vorname
    Arbeitsort
    Betrag

    Nun will ich, daß mir der Betrag summiert angezeigt wird, der an einem bestimmten Arbeitsort an einem bestimmten Tag (Datum) war.
    Zum Beispiel steht bei Arbeitsort "Kass1" und "Kasse2" drinnen. Am 26.04.2003 wurde von Mitarbeiter1 100,- Euro in Kasse1 eingenommen. Von Mitarbeiter2 200,- Euro.
    Nun bräuchte ich eine SQL-Abfrage, die mir angibt wieviel insgesammt (Also "SUM (Betrag)") am 26.04.2003 in Kasse1 eingenommen wurde.

    Ich habe es schon so versucht:

    SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM WerWoWannWieviel GROUP BY Datum, Arbeitsort

    Jetzt zeigt es mir aber nur alle summierten Beträge an, die an einem Tag an einem Arbeitsort eingenommen wurden. Ich bräuchte aber einen bestimmten Tag.
    Also ich denke mal irgendwie ein "Datum LIKE "26.04.2003"" und irgendwie noch ein "Arbeitsort LIKE "Kasse1"".

    Ich habe aber keine Ahnung wie die SQL-Abfrage auszusehen hat. Ich bekomme es einfach nicht hin.
    Könnte mir da bitte jemand die SQL-Abfrage machen?

    Im voraus schonmal Dankeschön

    Grüssle
    itsection
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus!

    Tabelle:
    tab1

    Felder:
    index
    Datum
    Nachname
    Vorname
    Arbeitsort
    Betrag

    _____________

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
     
    SELECT tab1.Datum, tab1.Arbeitsort, Sum(tab1.Betrag) AS SummevonBetrag
    FROM tab1 GROUP BY tab1.Datum, tab1.Arbeitsort HAVING (((tab1.Datum)=#1/1/2003#) AND ((tab1.Arbeitsort)="ort1"));
     
    Bei mir liefert das das gewünschte Ergebnis ...
     
    index   Datum        Nachname   Vorname Arbeitsort  Betrag
    1   01.01.2003  d   d   ort1         10.000,00 €
    2   01.01.2003  d   d   ort1        150.000,00 €
    3   01.01.2003  d   d   ort2          9.999,00 €
    4   01.02.2003  d   d   ort3            651,00 €

    Hierbei gibt mir die Abfrage am 1.1.2003 und Ort1 160000,00 € zurück.

    Gruss Tom
     

  3. #3
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hi,

    ersteinmal Danke für die Abfrage.
    Ich habe es jetzt so gemeistert:

    PHP-Code:
    "SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM
    WerWoWannWieviel WHERE Datum LIKE '" 
    EingabeDatum "' AND
    Arbeitsort LIKE '" 
    EingabeArbeistort "' GROUP BY Datum, Arbeitsort"

    EingabeDatum irgendeinenString  z.B01.01.2003
    EingabeArbeistort 
    irgendeinString2 z.BKasse1 
    Jetzt habe ich aber noch ein Problem,
    wenn ich jetzt nicht nur vom 01.01.2003 die Beträge addiert haben
    will, sondern vom ganzen Monat Januar, also vom 01.01.2003 -
    31.01.2003, wie kann ich denn das verwirklichen?
    Ich habe es schon mit BETWEEN versucht, doch dann zeigt es sie mir
    nur an, die Beträge an den einzelnen Tagen, ich will sie aber
    summiert haben. Wie kann ich denn das machen?

    Grüssle
    itsection
    Geändert von itsection (28.04.03 um 20:41 Uhr)
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus!

    Versuchs mal hiermit ...

    Code :
    1
    2
    3
    4
    5
    
    SELECT tab1.Arbeitsort, Sum(tab1.Betrag) AS SummevonBetrag
    FROM tab1
    WHERE (((tab1.Datum) Between #1/1/2003# And #6/1/2003#))
    GROUP BY tab1.Arbeitsort
    HAVING (((tab1.Arbeitsort)="ort1"));

    liefert mit bei:

    Code :
    1
    2
    3
    4
    5
    
    index   Datum        Nachname   Vorname Arbeitsort  Betrag
    1   01.01.2003  d   d   ort1         10.000,00 € 
    2   01.01.2003  d   d   ort1         150.000,00 €
    3   01.01.2003  d   d   ort2         9.999,00 €
    4   01.02.2003  d   d   ort1          651,00 €

    als Ergebnis

    Arbeitsort SummevonBetrag
    ort1 160.651,00 € (vom 1.1.2003 bis zum 6.1.2003)

    Gruss Tom
     

  5. #5
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hi,

    ich habe jetzt mal folgende Werte drinnen

    Datum Betrag Arbeitsort
    01.01.2003 15 ort1
    01.01.2003 21 ort1
    08.01.2003 22 ort1
    25.01.2003 23 ort1
    01.02.2003 3000 ort1
    02.02.2003 4000 ort1
    15.02.2003 2000 ort1
    21.02.2003 1000 ort1

    Und mit dieser Abfrage hier:
    PHP-Code:
    SELECT tab1.ArbeitsortSum(tab1.Betrag) AS SummevonBetrag
    FROM tab1 WHERE 
    (((tab1.DatumBetween #1/2/2003# And #28/2/2003#))
    GROUP BY tab1.Arbeitsort HAVING (((tab1.Arbeitsort)="ort1")); 
    liefert er mir das Ergebnis 7045.
    Es sollte doch aber 10000 rauskommen. Er addiert mir also die beiden
    Einträge vom 08.01.2003 und vom 25.01.2003 auch mit dazu.

    Wo könnte denn da noch der Fehler liegen? Ich habe auch schon versucht anstatt
    PHP-Code:
    Between #1/2/2003# And #28/2/2003# 
    das hier
    PHP-Code:
    Between #01/02/2003# And #28/02/2003# 
    eingefügt, doch funktioniert auch nicht.
    Könntest Du mir bitte nochmal helfen?

    Grüssle
    itsection
    Geändert von itsection (28.04.03 um 20:40 Uhr)
     

  6. #6
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus!

    Code :
    1
    2
    3
    4
    5
    6
    
     
    SELECT tab1.Arbeitsort, Sum(tab1.Betrag) AS SummevonBetrag
    FROM tab1
    WHERE (((tab1.Datum) Between #2/1/2003# And #2/28/2003#))
    GROUP BY tab1.Arbeitsort
    HAVING (((tab1.Arbeitsort)="ort1"));

    Bringt bei mir bei deinen Daten das ergebnis 10000 € ...?

    Schau mal nochmal...

    Gruss Tom

    EDIT:

    Schau mal auf das Datumsformat ...
    Geändert von Thomas Darimont (28.04.03 um 16:56 Uhr)
     

  7. #7
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hi,

    bei mir bringt er jetzt 10045
    ich weiß ach nicht warum er die 45 noch mit nimmt?
     

  8. #8
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus ... wie gesagt, schau mal auf das Datumsformat in der Abfrage ...

    ...Between #2/1/2003# And #2/28/2003#))...

    Gruss Tom
     

  9. #9
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hi,

    habe ich gemacht,
    bei mir heisst es jetzt:
    Between #2/1/2003# AND #2/28/2003#

    aber es kommt wirklich immer 10045. der nimmt mir immer die letzten zwei vom Januar noch mit.
     

  10. #10
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus!

    ...hmmmm...

    dann schau dir mal meine MDB an ...

    Gruss Tom
    Angehängte Dateien Angehängte Dateien
     

  11. #11
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hi,

    also ich muss jetzt noch schnell etwas erledigen, hättest Du heute Abend nochmal ein bischen Zeit?
    Ich bin so gegen halb acht wieder hier. Ich schreibe dann mal ob es bei Deiner DB geklappt hat.

    Grüssle
    itsection
     

  12. #12
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus!

    OK

    Gruss Tom
     

  13. #13
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Hi,

    also ich habe es mal mit Deiner DB probiert, da hats geklappt, bei
    meiner gehts nicht.
    Ich habe jetzt mit Access mal ne neue gebastelt, doch nun habe ich
    das Problem, das mein Visual Basic 6.0 Programm dumm rum macht. Da
    steht dann immer dass es die Datenbank nicht lesen kann, woran könnte
    denn das liegen?

    Grüssle
    itsection
    Geändert von itsection (28.04.03 um 20:39 Uhr)
     

  14. #14
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Servus!

    ********

    Keine Ahnung sorry...

    hab die db mit Access 2002 (Office XP @W2K) erstellt...

    Gruss Tom
     

  15. #15
    itsection itsection ist offline Mitglied
    Registriert seit
    Apr 2003
    Beiträge
    22
    Ok,

    aber eine Frage hätte ich noch.

    Wenn ich einen String habe, mal angenommen der heisst "Datum".
    Der String hat den Wert "Januar". Kann ich dann irgendwie mit
    Hilfe von SQL alle Beträge im Januar summieren? Also ohne jetzt
    extra noch hinschreiben zu müssen von 01.01.2003 bis 31.01.2003?

    Grüssle
    itsection
     

Ähnliche Themen

  1. [MDX] Abfrage mit ähnlicher Semantik zu SQL Abfrage mit Group By und Where
    Von Thomas Darimont im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 28.01.10, 18:56
  2. Antworten: 34
    Letzter Beitrag: 23.12.09, 20:56
  3. Access : gespeicherte Abfrage als Grundlage für SQL Abfrage
    Von tombe im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 10.02.07, 22:21
  4. SQL Abfrage: Abfrage nach ungleichen Variablen? ne -.-
    Von Nilman im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 31.05.05, 13:24
  5. sql server 2000 Abfrage einer Abfrage
    Von supafunk im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.04.05, 18:20