tab vertriebspartner
name
vorname
ort
plz
telfon
vpid
tab gebühren
betrag
datum
grund
vpid
und ich möchte eine ausgabe realisieren, die mir die gesamtheit aller gebühren in einem bestimmten zeitraum von einer bestimmten selektion von vertriebspartnern anzeigt
beispiel: alle vertriebspartner deren ort Berlin ist und die summe der gebühren vom 31.3.2001 bis zum 31.4.2001
und die ausgabe sollte so aussehen
Maria Mustermann 31.1.2001 17 3179DM
wobei die 17 die vpid und die 3179 die summe aller beträge in gebühren sind, die als vpid 17 haben und nach dem 31.3.2001 aber vor dem 31.4.2001 dazu gekommen sind
Das DBMS ist Microsoft Access aber angesprochen wird es direkt über SQL befehle
SELECT \*
FROM vertriebspartner, gebühren
WHERE
vertriebspartner.vpid = gebühren.vpid
AND
gebühren.datum = 31.4.2001
AND
vertriebspartner.vpid = gesuchtervpid
Bei der Abfrage des Datums bin ich mir nicht sicher, das ist datenbankspezifisch, probiers halt nicht, falls es nicht geht such nach irgendwelchen Funktionen zum Datumsvergleich oder frag mal im Access-Forum nach.
Grüße, Robert
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
SELECT *
FROM vertriebspartner, gebühren
WHERE
vertriebspartner.vpid = gebühren.vpid
AND
gebühren.datum = 31.4.2001
AND
vertriebspartner.vpid = gesuchtervpid
ja damit kriege ich alle vertriebspartner und alle gebuehren einträge, aber nicht wieviel die gebuehren aus dem feld „betrag“ in den ausgewählten datensätzen gesamt ergibt… nochmal:
ich habe einen vertriebspartner mit einer id und einen ganzen haufen gebühren deren grösse unter „betrag“ gespeichert ist… dem vp ordne ich sie über die vpid zu… sprich:
eine liste der vps in berlin (sagen wir 10) und die gebühren, die zwischen dem 1.3. und 1.4. angelaufen sind summiert pro vp
Über die GROUP BY Klausel kannst du Datensätze deren Inhalte eines bestimmten Feldes bzw. mehrerer Felder ident sind zusammenfassen, also zB alle Datensätze mit gleicher vpid.
Im SELECT kannst du dann über diverse Funktionen bestimmen wie er die Felder aus diesen Gruppen zusammenfassen sollen, wie zB SUM für summieren. Du kannst nur noch die Felder direkt ins SELECT nehmen die auch im GROUP BY sind (weil sonst ja nicht garantiert ist, dass sie für alle Datensätze ident sind).
Also z. B.:
feld1 feld2
a 1
a 2
SELECT feld1, SUM( feld2 ) FROM tabelle GROUP BY feld1
Würde ergeben:
a 3
Auf deine Abfrage angewandt:
SELECT SUM( betrag )
FROM vertriebspartner, gebühren
WHERE
vertriebspartner.vpid = gebühren.vpid
AND
gebühren.datum = 31.4.2001
AND
vertriebspartner.vpid = gesuchtervpid
GROUP BY vertriebspartner.vpid