Verschiedene Felder aus verschiedenen Tabellen in eine Spalte

lapadula

Aktiver Benutzer
Beiträge
33
Guten Tag,

ich brauche ein ungewöhnlichen Query, da die Datenbank etwas komisch aufgebaut ist, ich aber im moment nichts daran ändern kann.

Aus Tabelle A brauche ich alle Werte aus Spalte S1 + alle Werte aus Spalte S1, S2, S3 die sich in Tabelle B befinden. Das ergebnis möchte ich in einer Spalte stehen haben und es dürfen keine doppelten Werte vorkommen.

Beispiel:

Tabelle A, S1: eins, zwei, drei

Tabelle B, S1: eins
Tabelle B, S2: zwei
Tabelle B, S3: drei

Ergebnis:
eins, zwei, drei

Wäre dankbar für tips.
 
Werbung:
Pffff.

Code:
test=*# select * from a;
  s1   
----------------
 eins,zwei,drei
(1 row)

test=*# select * from b;
  s1  |  s2  |  s3  
------+------+------
 eins | zwei | drei
(1 row)

test=*# select * from a left join b on a.s1 = b.s1 || ',' || b.s2 || ',' || b.s3;
  s1  |  s1  |  s2  |  s3  
----------------+------+------+------
 eins,zwei,drei | eins | zwei | drei
(1 row)

test=*#

Ich halte das allerdings für groben Unfug was ihr da macht.
 
Danke, das ist auch Quatsch aber die Datenbank hat jemand anders erstellt.

Ich bin gerade mal bei den Grundlagen und verstehe nicht so recht was du da geschrieben hast.

Wäre das nicht mit UNIONs lösbar wie z. B. so:

select s1 from A UNION

select s1 from B UNION
select s2 from B UNION
select s3 from B;

nur weiss ich nicht wie ich dann die where Bedingung einbauen soll (where "virtuelle Spalte" is not null and not empty)

edit habs herausgefunden, hab gedacht es wäre nicht so umständlich nach jedem select die where bedingung anzufügen
 
Zuletzt bearbeitet:
vielleicht habe ich Dich ja falsch verstanden, vielleicht wäre ein nachvollziehbares Beispiel kein Fehler. Dein

Code:
Ergebnis:
eins, zwei, drei

läßt halt Spielraum für Interpretionen.
 
Ich wollte alle Module, die es zu einem Programm gibt ausgeben. Das Problem ist, dass die Module in zwei verschiedenen Tabellen liegen, in einer Tabelle sogar in mehreren Spalten. In der einen Tabelle gibt es Werte die es in der anderen Tabelle nicht gibt. Ich wollte eben alle sehen.

Normalerweise müssten diese Module auch eindeutig einem Kunden zugewiesen sein, sind die aber nicht. Stattdessen wurden die Module in der Tabelle Programme einfach über ein Programm insertet bzw. updated
 
Werbung:
Beispiel:

Tabelle A, S1: eins, zwei, drei
Heißt das Tabelle A hat eine Spalte S1 und darin stehen Werte mit Komma getrennt oder sollen das vier Spalten sein?

Dein Beispiel hat auch keine Join-Condition also keinen Fremdschlüssel in Tabelle B der irgendwie Sinn ergibt. Du solltest mal Beispieldatensätze aus Tabelle A und B angeben und das Ergebnis das die liefern sollen.

Dein bisheriges Beispiel taugt nichts, wenn das Ergebnis "eins, zwei, drei" lautet soll kannst du da auch SELECT S1 FROM tabelleA machen, da steht dann auch eins, zwei, drei.
 
Zurück
Oben