ich sitze hier grad vor einem Problemchen, zu dem ich einen Denkanstoß bräuchte.
Zwei Tabellen, technisch n:m, faktisch enthält sie aber nur Daten, die sich als 1:n beschreiben lassen.
Eine Tabelle "Vertrag", eine Tabelle "Parzelle", verknüpft via "VertragParzelle".
Einem Vertrag sind eine oder mehrere Parzellen zugeordnet, jeweils mit verschiedenen Eigenschaften.
Nun brauche ich eine Ausgabe aller Verträge mit bestimmten Eigenschaften und einigen Daten aller dazugehörigen Parzellen. Alles klappt wunderbar, bis auf:
Ein Feld in "Parzelle" ist die Flächenangabe dieser Parzelle. Ich brauche nun die Gesamtfläche der einem Vertrag zugewiesenen Parzellen, aber auch alle anderen Daten (wenn sie in der Ausgabe redundant drinstehen, ist das nicht weiter schlimm).
Wenn ich mit
Code: Select all
SELECT .., SUM(Parzelle.flaeche) AS Vertragsflaeche, ...
...
GROUP BY Vertrag.id
Was mir völlig reichen würde, wäre eine Ausgabe dieser Art:
Code: Select all
Vertrag.nr Vertrag.abschlussdatum Vertragsflaeche Parzelle.nr Parzelle.typ Parzelle.flaeche
12 12-12-2012 1.2 4 Bla 0.5
12 12-12-2012 1.2 382 Blubb 0.2
12 12-12-2012 1.2 1 Blibb 0.5
15 10-10-2010 0.8 42 Zonk 0.4
15 10-10-2010 0.8 9090 Irgendwas 0.4
39 11-11-2011 110 10 Dies 20
39 11-11-2011 110 13 Das 90
Hat jemand einen Hint?
Gruß, Nico
P.S.: Nur so, weil mir das neulich mal begegnet ist, aus reiner Neugierde: Welche Unterschiede gibt es bei SQLite via PHP5-PDO zwischen expliziter und impliziter INNER JOIN-Schreibweise? Auf einer ziemlich langsamen Gurke mit einer eher aufwändigen Query habe ich durch Wechsel von expliziter auf implizite Schreibweise über 100% Performancegewinn gehabt. Und ich habe tatsächlich nur das JOIN x ON y durch ein WHERE ersetzt, die Bedingungsklausel war inhaltlich die selbe.