Hallo Robert,

ich bin gerade beim Aufräumen auf diese alte Mail gestoßen, die wohl keine Antworten hatte.
Am 08.02.2011 20:13, schrieb Robert Großkopf:
Liebe Liste,

ich habe hier eine Abfrage für eine Vereinsdatenbank zusammengestellt,
die mir die momentane Besetzung eines Vorstandes listen soll - incl. der
eventuell nicht besetzten Posten. Bevor ich diese letzte Ergänzung
einbaute funktionierte die Abfrage, danach kam OpenOffice aber doch sehr
unterschiedlich ins Schleudern:

SELECT "Vorstand_Posten"."Posten", "Mitglied"."Nachname",
"Mitglied"."Vorname", "Mitglied"."ID" AS "MitgliedNr.",
"rel_Mit_Vor"."WahlDat" FROM  "Vorstand_Posten" LEFT JOIN "rel_Mit_Vor"
ON "rel_Mit_Vor"."vorID" = "Vorstand_Posten"."ID" AND
"rel_Mit_Vor"."EndDat" IS NULL LEFT JOIN "Mitglied" ON
"rel_Mit_Vor"."mitID" = "Mitglied"."ID" ORDER BY "Vorstand_Posten"."ID" ASC

Folgendes passiert in OpenOffice 3.1.1
Es wird beharrlich ignoriert, dass ich 'AS "MitgliedNr."' mit eingebe.
Der Inhalt stimmt. Könnte ich zwar mit leben - ändere ich eben die
Bezeichnung im Formular.

Nun möchte ich aber auf OOo 3.3 umsteigen, habe zur Zeit nur Libre hier
laufen, da ich OpenOffice so nicht parallel installiert bekomme.

Da passiert folgendes
Die MitgliedsNr. erscheint in der Abfrage, dafür steht bei jedem Posten,
zu dem es keinen Inhaber gibt, als Mitgliedsnummer eine 0 und als
Wahldatum "03.01.1" - das Datum ist also genau genommen in keiner
Schreibweise ein gültiges Datum.

Nun, die Libre-Version hat zur Zeit für mich mehr Nachteile, die OOo
3.1.1-Version kann ich korrigieren. Ich wüsste nur gerne, woran es
liegt, das so unterschiedliche Ergebnisse produziert werden.

Ich hätte hier Bedenken zu dem left join zu "rel_Mit_Vor". Durch die Bedingung "AND "rel_Mit_Vor"."EndDat" IS NULL " machst Du ja aus dem left einen inner join, das könnte die Ursache der ungewollten Verhaltens sein.
Ich würde diese Bedingung so machen:
AND NVL("rel_Mit_Vor"."EndDat",'01.01.2099') ='01.01.2099'
Mit nvl wird erst mal der NULL-Wert durch ein festes Datum ersetzt, was dann als Bedingung genommen wird. ich mache das in Oracle so. Die Funktion scheint es in HSQLDB auch zu geben, falls ich jetzt in die richtige Dokumentation gesehen habe. Eventuell kannst Du coalesce oder ifnull verwenden.

Ahoi

Thomas

--
-----------------------------------------------------------------
To unsubscribe send email to [email protected]
For additional commands send email to [email protected]
with Subject: help

Antwort per Email an