Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#4

Re: [Blockade] Passendes SQL Statement gesucht

  Alt 7. Sep 2009, 15:37
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.2009and '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
  Mit Zitat antworten Zitat