von RobertG » Di, 06.01.2015 11:15
Hallo sheepfriend,
an CURRENT_TIME habe ich auch zuerst gedacht. Von der Logik her wäre dort nur die aktuelle Uhrzeit zu erwarten, beim CURRENT_TIMESTAMP Datum und Uhrzeit und bei CURRENT_DATE das Datum. Ich habe das kurz getestet und bei der HSQLDB festgestellt, dass mit CURRENT_TIME entgegen der eigentlichen Definition wohl auch das Datum irgendwie mitgeliefert wird. Vielleicht wird einfach beim Datum die Tageszeit auf 0 Uhr gesetzt.
Nun aber zu der Abfrage:
Code: Alles auswählen
SELECT "Finanzdaten"."Kreditnummer", "Finanzdaten"."eingegangene Raten", "Finanzdaten"."Eingangsdatum", "Kundendaten"."Vorname", "Kundendaten"."Nachname", "Kundendaten"."Wohnort", "Kundendaten"."Straße, Nr " FROM "Finanzdaten", "Kundendaten", "Kontodaten" WHERE "Finanzdaten"."Kundennummer" = "Kundendaten"."Kundennr." AND "Kontodaten"."Kreditnummer" = "Finanzdaten"."Kreditnummer"
Nicht alles, was ein Assistent zusammen bastelt, muss definitiv richtig sein. Das obere ist es aber, weil da Felder dreier Tabellen vorkommen, die auch in der Tabellenliste stehen und deren Beziehung anschließend zueinander definiert wird.
Code: Alles auswählen
SELECT "Finanzdaten"."Eingangsdatum" FROM "Finanzdaten" WHERE DATEDIFF( 'dd', CURRENT_TIME, "Finanzdaten"."Eingangsdatum")>31
Das hier ist ebenfalls eine komplette Abfrage, die allerdings nur eine Spalte mit Datumswerten liefert.
Das AND, das beide Abfragen verbindet, ist falsch.
Du möchtest die obere Abfrage mit dem DATEDIFF gefiltert haben?
Code: Alles auswählen
SELECT "Finanzdaten"."Kreditnummer", "Finanzdaten"."eingegangene Raten", "Finanzdaten"."Eingangsdatum", "Kundendaten"."Vorname", "Kundendaten"."Nachname", "Kundendaten"."Wohnort", "Kundendaten"."Straße, Nr " FROM "Finanzdaten", "Kundendaten", "Kontodaten" WHERE "Finanzdaten"."Kundennummer" = "Kundendaten"."Kundennr." AND "Kontodaten"."Kreditnummer" = "Finanzdaten"."Kreditnummer" AND DATEDIFF( 'dd', CURRENT_TIME, "Finanzdaten"."Eingangsdatum")>31
So hast Du
Code: Alles auswählen
SELECT ...darzustellende Felder... FROM ...betroffene Tabellen... WHERE ...alle Bedingungen...
Und keine zusätzlichen SELECT-Befehl, der mitten in den Bedingungen neue Felder produzieren soll.
Gruß
Robert
Hallo sheepfriend,
an CURRENT_TIME habe ich auch zuerst gedacht. Von der Logik her wäre dort nur die aktuelle Uhrzeit zu erwarten, beim CURRENT_TIMESTAMP Datum und Uhrzeit und bei CURRENT_DATE das Datum. Ich habe das kurz getestet und bei der HSQLDB festgestellt, dass mit CURRENT_TIME entgegen der eigentlichen Definition wohl auch das Datum irgendwie mitgeliefert wird. Vielleicht wird einfach beim Datum die Tageszeit auf 0 Uhr gesetzt.
Nun aber zu der Abfrage:
[code]SELECT "Finanzdaten"."Kreditnummer", "Finanzdaten"."eingegangene Raten", "Finanzdaten"."Eingangsdatum", "Kundendaten"."Vorname", "Kundendaten"."Nachname", "Kundendaten"."Wohnort", "Kundendaten"."Straße, Nr " FROM "Finanzdaten", "Kundendaten", "Kontodaten" WHERE "Finanzdaten"."Kundennummer" = "Kundendaten"."Kundennr." AND "Kontodaten"."Kreditnummer" = "Finanzdaten"."Kreditnummer" [/code]
Nicht alles, was ein Assistent zusammen bastelt, muss definitiv richtig sein. Das obere ist es aber, weil da Felder dreier Tabellen vorkommen, die auch in der Tabellenliste stehen und deren Beziehung anschließend zueinander definiert wird.
[code]SELECT "Finanzdaten"."Eingangsdatum" FROM "Finanzdaten" WHERE DATEDIFF( 'dd', CURRENT_TIME, "Finanzdaten"."Eingangsdatum")>31[/code]
Das hier ist ebenfalls eine komplette Abfrage, die allerdings nur eine Spalte mit Datumswerten liefert.
Das AND, das beide Abfragen verbindet, ist falsch.
Du möchtest die obere Abfrage mit dem DATEDIFF gefiltert haben?
[code]SELECT "Finanzdaten"."Kreditnummer", "Finanzdaten"."eingegangene Raten", "Finanzdaten"."Eingangsdatum", "Kundendaten"."Vorname", "Kundendaten"."Nachname", "Kundendaten"."Wohnort", "Kundendaten"."Straße, Nr " FROM "Finanzdaten", "Kundendaten", "Kontodaten" WHERE "Finanzdaten"."Kundennummer" = "Kundendaten"."Kundennr." AND "Kontodaten"."Kreditnummer" = "Finanzdaten"."Kreditnummer" AND DATEDIFF( 'dd', CURRENT_TIME, "Finanzdaten"."Eingangsdatum")>31 [/code]
So hast Du
[code]SELECT ...darzustellende Felder... FROM ...betroffene Tabellen... WHERE ...alle Bedingungen...[/code]
Und keine zusätzlichen SELECT-Befehl, der mitten in den Bedingungen neue Felder produzieren soll.
Gruß
Robert