mit dem ersten select bekomme ich meine Daten mit Bedingung aus 2 anderen Tabellen, funktioniert
mit den anderen select bekomme ich alle Daten ohne die Daten aus dem Ersten aber mit dem Nullwert in einer Spalte
und die Zeilen mit dem Nullwert möchte ich auch in der Ersten Abfrage haben
die kann ich aber inder ersten Abfrage nicht direkt bekommen weil das Feld mit dem Nullwert dort nicht Null ist sondern auf die anderen beiden Tabellen verweist.
laut Syntax müßte meine Abfrage “select … from tabellen (1.select.komplett) as t where Bedingungen” stimmen aber igendwie muß sich doch ein Fehler plaziert haben
test=*# select val from foo;
val
-----
1
2
(2 rows)
test=*# select val from (select * from foo) as f where val = 1;
val
-----
1
(1 row)
test=*# select val from tabellen (select * from foo) as f where val = 1;
ERROR: syntax error at or near "select"
LINE 1: select val from tabellen (select * from foo) as f where val ...
^
test=*#
ich verstehe dich nicht. Du möchtest das dir geholfen wird, warum kannst du da nicht einfach den Aufbau deiner relevanten Tabellen + deine Abfrage und Fehlermeldung hier posten? Du musst dazu ja nicht mal deine Daten preis geben.
Nur mit der Aussage:
ich habs in alle Richtungen umgestellt ohne Erfolg
kann man nichts anfangen. Wir wissen nicht wie es vorher war, wie es jetzt ist.
Wie soll man da helfen?
Eigentlich ganz einfach, ich möchte alles aus Tabelle 1 plus alles aus Tabelle 2 welche die Bedingung aus Tabelle 1 Spalte 1 erfüllt und die Bedingung aus Tabelle 1 Spalte 1 die diese Bedingungen, da dort nicht vorhanden, nicht erfüllt in einer Abfrage haben.
Habe etwas in einem anderen Forum von akretschmer mit einer array Anweisung gefunden das so ähnlich aussah kann es aber leider nicht umsetzen.
Also ich kanns nicht, dann bleibt mir nur ein Danke an euch für eure Tips bei diesem und bei meinen anderen Fragen und seh ein dass dieses hier nicht lösbar ist.
Allen ein gesundes und friedvolles Neues Jahr wünscht euch simar
So dringend kann’s ja dann auch nicht sein, wenn Du weder eine saubere, halbwegs eindeutige, textuelle Beschreibung noch eine handvoll vorher/nachher Daten “zu Papier” bringst.
ich denke meine Frage ist “halbwegs eindeutige, textuelle Beschreibung” ansonsten hätte ich ja die Lösung
wie sollte ich es anderst formulieren?
select * from Tabelle1, tabelle2
where Tabelle1.Spalte1 = tabelle2.Spalte1
and tabelle1.Spalte1 not in Tabelle2
so verständlicher?
Das ist prinzipiell bei einer Bank so
Aber wir wissen wirklich nicht so genau, was du machst. Die Lösung können ein Union oder eine geänderte where-Bedingung oder ein anderer Join sein. Oder was ganz anderes. Solange wir dein SQL nicht sehen können wir ja nur raten.
Häufig ist es einfacher wenn Du uns ein paar Beispieldaten und Tabelledefinition zeigst - am Besten als CREATE TABLE und INSERT Statement, oder als Online Skript wie z.B. hier: https://dbfiddle.uk/?rdbms=postgres_12
Basierend auf den Beispieldaten sagst Du uns dann was das Resultat ist, welches Du erwartest. “Dummy-Statements” die nur Namen wie “tabelle1” oder “tabelle2” enthalten sind extrem schwierig zu verstehen.
Aber:
Niemand hat Dein Problem verstanden und niemand kann mit der Lösung etwas anfangen.
Falls Du ein ernsthaftes Interesse daran hast, irgendwann mal zielgerichtet Hilfe zu erhalten, hier noch mal ein kleines Beispiel der Unmöglichkeit:
ich habs in alle Richtungen umgestellt ohne Erfolg
Weit jenseits von einem einzigen SQL Begriff: was sollen einem Deine Worte oben sagen. SQL kennt keine Richtungen, umstellen kann man die Uhr oder Möbel oder die Ernährung, allein auch hier merkt man, eine Idee wird zwar vermittelt, wie die Ernährung vor oder nach der Umstellung aussah oder wie sie verbessert werden könnte, weiß trotzdem niemand.
Magst in manchen Punkten recht haben, aber wie du sicherlich bemerkt hast bin ich nicht der sql-Profi sondern ein Laie und als solcher ist es mir nicht möglich mich in der von dir gewünschten Fachsprache auszudrücken sondern veruche mein Problem mit meinen Worten vermeintlich nachvollziehbar darzustellen.
Für viele der Profis hier mögen meine diversen Probleme und Fragen lächerlich sein, für mich sind es eben Stellen an denen ich nicht weiter weis und ich mir hier Hilfe erhoffe und aus vergangener Erfahrung auch erhalten habe.
Deshalb gilt mein Dank denen die mir trotz meiner laienhaften Fragestellungen weitergeholfen haben und es auch weiterhin versuchen.
Es geht nicht um Lächerlichkeit oder Fachsprache. Mein Appell galt dem Bemühen, echte Informationen in einen Beitrag zu packen.
Ich kann auch umgekehrt nur um Verständnis bitten, einige sind einfach sehr bequem oder glauben, die “Experten” am anderen Ende des Internets seien irgendwie allwissend.
Das beliebte “es geht nicht” kann in der Praxis in viele verschiedene Ausprägungen aufgeteilt werden. Dazu gehört kein Expertentum.
es erscheint ein Fehler (Welcher?)
es erscheint kein Ergebnis (Was hätte es denn sein sollen?)
es erscheint ein unerwünschtes Ergebnis (Was hätte es denn sein sollen?)
es erscheint ein falsches Ergebnis (Was hätte es denn sein sollen?)
das System reagiert nicht / hängt (Wie lange?)
usw.
Niemand kann das aus der Ferne raten geschweige denn wissen. Und die Mühe “es erscheint Fehler SQLERRM: relation ‘xyz’ already exists” ist nicht viel größer als “es geht nicht” zu schreiben. Selbst wenn man es abtippt statt es zu kopieren.
Im Idealfall ist schon die Eröffnung eines Threads im Forum, wo man sich damit auseinandersetzt, wie man sein Problem am verständlichsten und einfachsten beschreibt, ein erhellender Prozess für einen selbst. So geht es mir zumindest öfter, wenn ich selbst irgendwo Fragen an ein Forum richte.