Announcement

Collapse
No announcement yet.

Zuerst gruppieren, dann joinen, oder umgekehrt?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zuerst gruppieren, dann joinen, oder umgekehrt?

    Hey Amigos, wie geht's?

    Ich habe hier 2 Tabellen (in einer sqlite3 Datenbank):
    Code:
    ids:
      id		integer
      name		VARCHAR(64)
    umsaetze:
      id		INTEGER
      monat		REAL
      umsatz	INTEGER
      anzahl	INTEGER
    Die Tabelle `ids` kombiniert ID Nummern mit Firmennamen und `umsaetze` die Umsatzzahlen, wobei hier zum Primärschlüßel 'id' und 'monat' gehören, weil eine Firma in mehreren Monaten Umsatz haben kann (natürlich). Eigentlich ist 'monat' im Format "YYYY.MM" gespeichert, als REAL, damit es sich schneller bearbeiten läßt. 'anzahl' speichert die Anzahl Rechnungen.

    Jetzt möchte ich eine Abfrage machen, die folgende Ergebnisattribute hat:
    Code:
    ergebnis:
      id
      name
      umsatz
      anzahl
      anzahl_monate
    Es sollen also einerseits die 'id's mit den 'name'n verknüpft werden, und anderseits alle 'umsatz'e und 'anzahl'en pro kunde summiert und die Monate gezählt werden.
    Folgendes funktioniert:
    Code:
    CREATE VIEW 'usz' AS
    SELECT id, COUNT(monat) AS 'anzahl_monate', SUM(umsatz) AS 'umsatz', SUM(anzahl) AS 'anzahl'
    FROM umsaetze
    GROUP BY id;
    
    SELECT ids.id AS 'id', name, umsatz, anzahl, anzahl_monate
    FROM ids LEFT JOIN usz ON (usz.id=ids.id)
    Das funktioniert bestens, deucht mir aber etwas umständlich. Deshalb meine Frage: Soll man es so machen, zuerst gruppiern (mit einer View) und dann joinen oder ist es umgekehrt besser, zuerst zu joinen und dann erst zu gruppiern?

    Vielen Dank für eure Antworten!
    Gruß,
    /dev

  • #2
    Die Aktion, die die Ergebnismenge stärker verringert sollte zu erst ausgeführt werden.

    Comment

    Working...
    X