AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Statement

Ein Thema von stOrM · begonnen am 20. Jun 2006 · letzter Beitrag vom 21. Jun 2006
Antwort Antwort
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#1

SQL Statement

  Alt 20. Jun 2006, 11:28
Datenbank: Access • Zugriff über: Ado
So langsam brech ich ins essen, hab kopfschmerzen vom sql
Diesmal hab ich schwierigkeiten mit nem SQL Statement über 4 Tabellen...

Ersma die Tabellen:

Tabelle Kunde:
Kunden_ID (Autowert, indiziert)
Vorname
Nachname

Tabelle Konto
Konto_ID (Autowert, indiziert)
Kunden_ID (Referenz auf Kunde.Kunden_ID)
Spende (JA/Nein)
Betrag(Integer)
Finanzierung(JA/Nein)
Finanz_Betrag(Integer)
Angenommen_Von
Datum_Eingang

Tabelle RatenAuftrag:
RA_ID (interne eindeutige Nummer)
KD_ID (Referenz zum Konten.Kunden_ID)
AUFRAGSBEZEICHNUNG (damit man weiß worum es geht)
Gesamtbetrag
Konditionen
Laufzeit
erledigt ...

Tabelle RatenVerlauf
RV_ID (interne eindeutige Nummer)
RA_ID (Referenz zu Ratenauftrag.RA_ID)
Rate (wieviel)
Zahlungseingang (Datum) ...

Nun wollte ich eigentlich mittels SELECT erreichen, das mir alle Datensätze angezeigt werden, erstmal ohne Unterscheidung ob nun eine Finanzierung(JA/NEIN) oder SPENDE(JA/NEIN) vorliegt oder nicht...

Jetzt wirds komisch (Wahrscheinlich durch meine nicht Kenntnis von SQL)
Mir werden alle Datensätze angezeigt bis auf den der keine Finanzierung ist, der ist verschwunden...

Das Problem ist leider ich weiss nicht wie ich um himmelswillen richtig Filtern kann, ich blick nicht mehr durch

Mals Query poschte:

AdQ1.SQL.Add('SELECT * FROM Kunde, Konto, Ratenauftrag, Ratenverlauf WHERE Kunde.kunden_id = Konto.kunden_id AND Ratenauftrag.Kunden_ID = Konto.Konto_ID AND Ratenverlauf.RA_ID = Ratenauftrag.RA_ID'); Dann hab ich noch versucht, nen SUM in die Select mit einzubauen welches mir folgendes ermitteln sollte:

Sum(Ratenauftrag.Gesamtbetrag - RatenverlaufRate) AS "TOTAL" usw...
Dabei bekam ich dann die schöne Meldung das Gesamtbetrag keinen Standartwert hat usw. usw... tritt bei unterschiedlichen Feldern auf also nicht nur bei Gesamtbetrag auch bei Total usw...

Ich blicks net mehr vielleicht brauche ganz dringend Hilfe, vielleicht kann jemand mit mir das ganze mal zerflücken das ich das endlich kapier...

DB = ACCESS!

vielen Dank!
  Mit Zitat antworten Zitat
morri

Registriert seit: 6. Jun 2006
Ort: Wuppertal
106 Beiträge
 
Delphi 7 Professional
 
#2

Re: SQL Statement

  Alt 20. Jun 2006, 11:56
?

Du hast doch im moment gar keinen Filter gesetzt!?!?
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: SQL Statement

  Alt 20. Jun 2006, 11:57
Dein Problem liegt wohl daran, daß es für den fehlenden Satz keine Referenzsätze in den Raten-Tabellen gibt. Du wirst wohl einen OUTER-Join auf diese beiden Tabellen generieren müssen. Das wird aber mit Access so nicht funktionieren, du wirst wohl eine etra Sicht auf die Ratentabellen generieren müssen.

Aggregat-Funktionen (SUM, AVG, COUNT etc) erwarten eine Gruppierung deiner abgefragten Felder, damit der SQL-Interpreter überhaupt weiß, wonach der die Summe bilden soll.

Wenn du Access auf deinem Rechner hast, versuch doch mal, dein SQL-Statement mit dem grafischen Editor für eine Sicht zu generieren.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: SQL Statement

  Alt 20. Jun 2006, 12:08
Uff!
Zitat:
Dein Problem liegt wohl daran, daß es für den fehlenden Satz keine Referenzsätze in den Raten-Tabellen gibt. Du wirst wohl einen OUTER-Join auf diese beiden Tabellen generieren müssen. Das wird aber mit Access so nicht funktionieren, du wirst wohl eine etra Sicht auf die Ratentabellen generieren müssen.
Das hab ich njetzt leider nicht wirklich kapiert
Könntest du mir das mal erklären als wär ich 3 Jahre alt? Ich bin echt ein DB Anfänger deshalb kann ich dir grad nicht folgen...

Ps.
Sagmal brauche ich unbedingt 4 Tabellen oder kann ich nicht alles in einer anlegen würde glaube ich die Sache für mich extrem vereinfachen???!!!

Bitte ist schon dringend!
vielen Dank
s!
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SQL Statement

  Alt 20. Jun 2006, 12:40
Versuch mal das folgende SQL-Statement:

SELECT * FROM (Kunde LEFT JOIN Konto ON Kunde.KundenID = Konto.Kunden_Id) LEFT JOIN (Ratenauftrag LEFT JOIN RatenVerlauf ON Ratenauftrag.RA_ID = RatenVerlauf.RA_ID) ON Kunde.KundenID = Ratenauftrag.KD_ID Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: SQL Statement

  Alt 20. Jun 2006, 12:54
Besten dank ich werde es mal ausprobieren, ich hoffe ich darf wenns um die Agregat Sachen geht nochmal auf dich zurück kommen?!

PS. Muss ich an den Beziehungen noch etwas in Access ändern oder sind die soweit ok??

vielen Dank
s!
  Mit Zitat antworten Zitat
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: SQL Statement

  Alt 21. Jun 2006, 12:34
Hi mikhal,
also dein query läuft ohne Probleme, dass heisst relativ ohne Probleme, jetzt bekomme ich zwar alles von den 4 Tabellen angezeigt im Grid, jedoch fehlen bestimmte Einträge...

Es wird z.B. nur eine Rate vom Kunden 1 angezeigt alle anderen Raten die in der Tabelle vorhanden sind werden komischerweise nicht angezeigt. Ich blick nicht mehr durch, ich hab gestern zuhause mit nen QueryBuilder deine SQL Anweisung eingegeben und hin und her probiert aber es bleibt dabei, die Ratenzahlungen sind verschwunden. Dies passiert übrigends auch noch bei anderen Feldern wie z.B. Einzahlungsdatum da gibt er mir auch nur eins anstelle der 5 vorhandenen.

Ich könnte dir vielleicht mal die Access.mdb senden oder den Inhalt das du sehen kannst was drin ist in den Tabellen und wie die Spalten alle heissen und so weiter + Beziehungen...
Bei intereese natürlich...

Viele Grüsse
s!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: SQL Statement

  Alt 21. Jun 2006, 14:28
Ein Kunde hat 1 oder mehr Konten.
Ein Ratenauftrag ist in deinem Datenmodell an einen Kunden und nicht an ein bestimmtes Konto angebunden.
Man sollte den Ratenauftrag aber besser mit einen bestimmten Konto verbinden.
=> Ein Konto hat dann 0..N Ratenaufträge
Ein kleiner aber entscheidender Unterschied!!

Deine Idee mit allem in einer Tabelle taugt nix; die 4 Tabellen sind schon ok so.
Tipp:
in Access kann man übers Menü: Extras->Beziehungen die Beziehungen zwischen Tabellen visuell darstellen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz