Hi ihr,
ich stecke gerade vor dem Problem, etwas möglichst elegant lösen zu wollen, am Liebsten nur mit
SQL.
Ich habe 3 Tabellen:
TURNOVER
TAGS
TAG_RELATIONSHIPS
Aufbau wie folgt:
SQL-Code:
CREATE TABLE TURNOVER (ID INTEGER, EXP_TYPE INTEGER, EXP_VALUE FLOAT, EXP_CATEGORY INTEGER, EXP_COMMENT CHAR(255) CHARACTER SET NONE, EXP_USER INTEGER, EXP_DATE DATE, EXP_LUX INTEGER);
CREATE TABLE TAGS (ID INTEGER, TERM_NAME CHAR(255) CHARACTER SET NONE);
CREATE TABLE TAG_RELATIONSHIPS (ID INTEGER, TERM_ID INTEGER, ENTRY_ID INTEGER);
In TURNOVER stehen Umsätze, in TAGS sind alle möglichen Tags aufgelistet, die der User je eingegeben hat und in TAG_RELATIONSHIPS schließlich wird die Verbindung zwischen den beiden Datenbanken geschaffen, indem jedem Eintrag in TURNOVER ein oder mehrere TAGS zugeordnet werden.
Nun möchte ich eine Liste aller Tags haben. Allerdings gefiltert. Wenn ich den Zeitraum 1.3.2009 - 1.4.2009 angebe, dann möchte ich nur die Tags haben, die auch in Einträgen in diesem Zeitraum vorkommen. Außerdem möchte ich die Summe aller Umsätze in diesem Zeitraum pro Tag (also, nicht Tag im Sinne von Wochentag, sondern "Täg"
).
Bislang mache ich es manuell: Zuerst alle Tags auslesen, dann alle Einträge, und dann die, die nicht passen, verwerfen. Das passiert in Delphi. Könnte man vielleicht auch eine
SQL-Abfrage formulieren, die genau das macht? Ich kanns irgendwie nicht...