![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320
|
![]() Hallo, hätte gerne gewußt, wie euer Select Statement für folgendes aussehen würde.
Zwei Tabellen Kunden und History Code:
Kunden: - KundenID - ... History: - HistoryID - KundenID - FlagID - LinkID - ... Code:
FlagID Beschreibung -------+---------------- 1 Rechnung 2 Zahlung 3 Gutschrift 4 Rücküberweisung Mich würde jetzt interessieren, wie das Select-Statement aussieht, wenn ich zum Beispiel alle Kunden haben will, die schon bezahlt haben. Unter Berücksichtigung evtl. vorhandener Gutschriften und neuerlicher Zahlscheinausstellung. Es kann ja vorkommen, dass ich eine Rechnung geschickt habe, die Adresse oder Firmenname, etc. nicht genau gepasst haben, er daher eine Gutschrift bekommt und dann einen neuerlichen Zahlschein. Das würde dann so ausschauen: Code:
HistoryID KundenID FlagID LinkID ----------+---------+-------+------ 1 1 1 #Rechnung 2 1 3 1 #Gutschrift 3 1 1 #Rechnung Code:
HistoryID KundenID FlagID LinkID ----------+---------+-------+------ 1 1 1 #Rechnung 2 1 2 1 #Zahlung 3 1 3 1 #Gutschrift 4 1 4 1 #Rücküberweisung Wie sieht da also die Abfrage aus? Ist übrigens eine Access-Datenbank, aber das ist ja eigentlich Powidl...
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur. http://www.chili-it.at |
![]() |
![]() |
![]() |
#2 |
Gesperrt
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915
|
![]() vorm 1. redbull tu ich mir immer schwer aber ich versuchs mal
![]() Code:
SELECT kun.*, his.* FROM Kunden AS kun LEFT JOIN History AS his ON (kun.KundenID = his.KundenID) WHERE his.FlagID = 2 AND his.FlagID = 3 |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320
|
![]() Die LinkID brauch ich dafür, um die Gutschrift einer Rechnung zuordnen zu können. Wie ich geschrieben habe, kann es sein, dass irgendwas auf der Rechnung nicht passt und dann braucht der Kunde eine Gutschrift und erhält dann eine neue Rechnung. Ohne LinkID hätte ich dann zwei Rechnungen und eine Gutschrift und ich wüßte nicht mehr, welche zusammen gehören...
Ich habe mal eine Datenbank erstellt um das besser zu veranschaulichen. Bei der Abfrage Rechnung_nicht_bezahlt kommen zum Beispiel falsche Datensätze raus. Wie der Name schon sagt, will ich nur die haben, die noch nicht bezahlt haben. Das wären die Datensätze mit KundenID 3, 4 und 5. KundenID 1 hat schon bezahlt, also nicht ausgeben und KundenID 2 hat eine Gutschrift auf seine Rechnung und keine neue erhalten, also auch nicht ausgeben. Verständlich, worum es mir geht??
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur. http://www.chili-it.at |
![]() |
![]() |
![]() |
#4 |
Gesperrt
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915
|
![]() Also FlagID 1 haben alle die eine Rechnung bekommen haben und FlagID 2 jene, die eine Zahlung geleistet haben? In LinkID steht dann immer wozu welche Aktion gehör?
Hab leider kein Access, daher kann ich mir dein Beispiel nicht anschaun. Nimm einfach das SQL von mir und verändere das WHERE. Code:
WHERE his.FlagID = 1 AND his.FlagID != 2 |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|