1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Verschiedene Felder aus verschiedenen Tabellen in eine Spalte

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von lapadula, 1 Februar 2017.

  1. lapadula

    lapadula Benutzer

    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.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. lapadula

    lapadula Benutzer

    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: 1 Februar 2017
  4. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  5. lapadula

    lapadula Benutzer

    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
     
  6. akretschmer

    akretschmer Datenbank-Guru

    ich bin raus ...
     
  7. ukulele

    ukulele Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden