von RobertG » Di, 06.01.2015 11:55
Hallo Jerome,
mit dem Feld "Name" hast Du ein Feld hinzugefügt, das "Not in aggregate function or group by clause" vorhanden ist. "aggregate function" ist eine Funktion, die etwas zusammensammelt, bei Dir das Minimum. Es wird das Minimum abhängig von "ID_ext" gesucht. Also jeweils für "ID_ext" das entsprechende Minimum gefunden. Jetzt ist die Frage, wie "Name" dazu passen soll. Du müsstest "Name" in die Gruppierung übernehmen, dann würde zumindest die Abfrage ablaufen - nur ob das Deinem Vorhaben entspricht kann ich hier nicht sagen:
Code: Alles auswählen
SELECT MIN( "letzter Anlagenbesuch" ), "ID_ext", "Name" FROM "Termine" GROUP BY "ID_ext", "Name"
Falls das nicht Deinem Vorhaben entspricht habe ich es hier etwas komplizierter:
Code: Alles auswählen
SELECT MIN( "letzter Anlagenbesuch" ) AS "Dat", "a"."ID_ext", (SELECT MAX("Name") FROM "Termine" WHERE "ID_ext" = "a"."ID_ext" AND "letzter Anlagenbesuch" = (SELECT MIN( "letzter Anlagenbesuch" ) FROM "Termine" WHERE "ID_ext" = "a"."ID_ext") ) AS "Name" FROM "Termine" AS "a" GROUP BY "ID_ext"
Es kann sein, dass zwei Namensbezeichnungen zu einem letzten Anlagenbesuch bei gleicher ID_ext passen. Deswegen habe ich in der korrelierenden Unterabfrage MAX("Name") stehen.
Gruß
Robert
Hallo Jerome,
mit dem Feld "Name" hast Du ein Feld hinzugefügt, das "Not in aggregate function or group by clause" vorhanden ist. "aggregate function" ist eine Funktion, die etwas zusammensammelt, bei Dir das Minimum. Es wird das Minimum abhängig von "ID_ext" gesucht. Also jeweils für "ID_ext" das entsprechende Minimum gefunden. Jetzt ist die Frage, wie "Name" dazu passen soll. Du müsstest "Name" in die Gruppierung übernehmen, dann würde zumindest die Abfrage ablaufen - nur ob das Deinem Vorhaben entspricht kann ich hier nicht sagen:
[code]SELECT MIN( "letzter Anlagenbesuch" ), "ID_ext", "Name" FROM "Termine" GROUP BY "ID_ext", "Name"[/code]
Falls das nicht Deinem Vorhaben entspricht habe ich es hier etwas komplizierter:
[code]SELECT MIN( "letzter Anlagenbesuch" ) AS "Dat", "a"."ID_ext", (SELECT MAX("Name") FROM "Termine" WHERE "ID_ext" = "a"."ID_ext" AND "letzter Anlagenbesuch" = (SELECT MIN( "letzter Anlagenbesuch" ) FROM "Termine" WHERE "ID_ext" = "a"."ID_ext") ) AS "Name" FROM "Termine" AS "a" GROUP BY "ID_ext"[/code]
Es kann sein, dass zwei Namensbezeichnungen zu einem letzten Anlagenbesuch bei gleicher ID_ext passen. Deswegen habe ich in der korrelierenden Unterabfrage MAX("Name") stehen.
Gruß
Robert