[PostNAS Suite] Alkis-Beziehungen
Jäger, Frank (KRZ)
F.Jaeger at KRZ.DE
Do Aug 22 04:55:16 PDT 2019
Moin!
Ja, bei SQL mangelt es noch etwas.
Wenn man zwei Tabellen verbinden will, dann muss man auch beide angeben.
FROM tab_a JOIN Tab_b ON ….
Im Beispiel ist aber nur jeweils eine Tabelle angegeben.
In dieser EINEN Tabelle aus dem Beispiel wird dann nach einem Literal gesucht, wie man an den ‚‘ erkennt.
WHERE feldname = ‘LITERAL‘
Es gib aber wohl keine Zeilen in denen die gml_id aus dem Text ‚ax_flurstueck.istgebucht‘ besteht.
Möchte man als Vergleichswert eine Spalte einer anderen Tabelle nehmen, dann lässt man die einfachen ‚‘ weg.
Sonderfall: Tabellen- oder Feldname mit Leerzeichen oder Groß-Klein-Schreibung in doppelte „“ setzen.
Hinter dem „ON“ vom „JOIN“ kann man dann die Verknüpfungs-Bedingung für den JOIN angeben, analog der WHERE-Klausel.
In meinem Beispiel, das in der Mail noch zu sehen ist, ist das korrekt angegeben. Einfach mal übernehmen …
Dort gibt es noch eine Besonderheit: Bei „FROM“ oder „JOIN“ ist hinter dem langen Tabellen-Namen jeweils ein kurzer Alias-Name angegeben, der dann als Prefix an allen anderen Stellen verwendet werden kann um die Tabelle zu bezeichnen, also hinter SELECT oder in WHERE.
Das braucht man z.B. wenn eine Tabelle mit sich selbst verknüpft ist. Dann kommt sie doppelt vor und somit ist der Name nicht mehr eindeutig.
Dann vergibt man für die beiden Versionen der gleichen Tabelle einfach zwei verschiedene Aliasse.
Viel Erfolg.
Frank
Von: NAS <nas-bounces at lists.osgeo.org> Im Auftrag von Helmut Seidel M.A.
Gesendet: Donnerstag, 22. August 2019 13:20
An: nas at lists.osgeo.org
Betreff: Re: [PostNAS Suite] Alkis-Beziehungen
Nochmal Hallo zusammen,
es tut mir leid, aber ich brüte noch immer an der Abfrage - leider sind meine SQL-Kenntnisse nur "basisch" - ich versuche daher die Abfrage mit den vielen JOINs in einzelne Abfragen aufzulösen - und die Ergebnisse dann nacheinander in eine Buchungssatz-Tabelle zu schreiben - so bekomme ich zwar einige richtige "Treffer" aber bei weitem nicht alle...
Ich nutze folgende Abfragen (in einem Python3-Programm, das die Daten direkt aus den NAS-Daten ausliest.
Abfrage 1 - Normale Buchung
"SELECT gml_id, buchungsart, laufendeNummer, istbestandteilvon, an "
"FROM ax_buchungsstelle "
"WHERE gml_id ='ax_flurstueck.istgebucht';"
Abfrage 2 - Buchung mit Rechten
"SELECT gml_id, buchungsart, laufendeNummer, zaehler, nenner, istbestandteilvon, an "
"FROM Buchungsstelle "
"WHERE an ='ax_flurstueck.istgebucht';"
Von da verknüpfe ich dann weiter auf das Buchungsblatt... Aber irgendwie bin ich wohl auf dem Holzweg, oder?
Danke
Helmut Seidel
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.osgeo.org/pipermail/nas/attachments/20190822/df6bc515/attachment-0001.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : smime.p7s
Dateityp : application/pkcs7-signature
Dateigröße : 2411 bytes
Beschreibung: nicht verfügbar
URL : <http://lists.osgeo.org/pipermail/nas/attachments/20190822/df6bc515/attachment-0001.bin>
Mehr Informationen über die Mailingliste NAS