|  |  | |
|  |  | 
| 
 | |||||||
| Programmierung Rat & Tat für Programmierer | 
|  | 
|  | Themen-Optionen | Ansicht | 
|  06.10.2006, 08:20 | #1 | 
| Veteran  Registriert seit: 08.02.2001 Alter: 41 
					Beiträge: 320
				 |  SQL Select Frage 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 | 
|   |   | 
|  06.10.2006, 09:21 | #2 | 
| Gesperrt Registriert seit: 14.08.2003 Alter: 48 
					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 | 
|   |   | 
|  06.10.2006, 20:53 | #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 | 
|   |   | 
|  06.10.2006, 21:16 | #4 | 
| Gesperrt Registriert seit: 14.08.2003 Alter: 48 
					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) | |
| 
 | 
 |