Hallo,
ein dritter Vorschlag:
habe kein Firebird, daher hier mal nur so hingeschrieben:
Folgende Annahme:
TAG_RELATIONSHIPS.TERM_ID gehört zu TAGS.ID
TAG_RELATIONSHIPS.ENTRY_ID gehört zu TURNOVER.ID
SQL-Code:
select *
from TURNOVER, TAGS, TAG_RELATIONSHIPS
where TURNOVER.ID = TAG_RELATIONSHIPS.ENTRY_ID
and TAG_RELATIONSHIPS.TERM_ID = TAGS.ID
Damit müssten die drei Tabellen erstmal vollständig zusammengestellt sein.
Nun kommen die Einschränkungen hinzu:
SQL-Code:
select *
from TURNOVER, TAGS, TAG_RELATIONSHIPS
where TURNOVER.ID = TAG_RELATIONSHIPS.ENTRY_ID
and TAG_RELATIONSHIPS.TERM_ID = TAGS.ID
and TURNOVER.EXP_DATE between '1.3.2009' and '1.4.2009' /* <-- kennt Firebird das? */
and TURNOVER.EXP_DATE >= '1.3.2009' /* <-- ansonsten so */
and TURNOVER.EXP_DATE <= '1.4.2009'
Nun müssen wir uns noch auf die auszugebenden Spalten einigen:
SQL-Code:
select
TAGS.ID,
TAGS.TERM_NAME, /* <-- Nun möchte ich eine Liste aller Tags haben. */
Sum(TURNOVER.EXP_VALUE) /* <-- Außerdem möchte ich die Summe aller Umsätze */
from TURNOVER, TAGS, TAG_RELATIONSHIPS
where TURNOVER.ID = TAG_RELATIONSHIPS.ENTRY_ID
and TAG_RELATIONSHIPS.TERM_ID = TAGS.ID
and TURNOVER.EXP_DATE >= '1.3.2009' /* <-- Allerdings gefiltert. */
and TURNOVER.EXP_DATE <= '1.4.2009' /* <-- Wenn ich den Zeitraum 1.3.2009 - 1.4.2009 angebe */
group by
TAGS.ID, /* <-- also, nicht Tag im Sinne von Wochentag, sondern "Täg" */
TAGS.TERM_NAME /* (alles, was nicht summiert wird, muss ins Group By) */
Schaumal, ob's Dir weiterhilft. Frei nach dem Motto: Viele Wege führen nach Rom