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

Mehrere SELECTs an einer Spalte durchführen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von exzel, 9 Oktober 2013.

  1. exzel

    exzel Datenbank-Guru

    Hallo zusammen,

    ich habe drei SELECT Abfragen. Jeder dieser SELECT Abfragen ließt die gleiche Spalte aus und führt an dem Inhalt eine Änderung mit REPLACE, SUBSTRING_INDEX etc. durch. Die Ergebnisse sollen dann jeweils in drei neuen Spalte dargestellt werden. Über SELECT UNION wird leider nur der Alias, der ersten Spalte verwendet. Die Aliase der beiden anderen Spalten fallen weg.

    Das sind die einzelnen Befehle

    Code:
    SELECT REPLACE(SUBSTRING_INDEX(Spalte, '%', 1), '~' , ' ') as Oberpunkt FROM Tabelle;
    Code:
    SELECT DISTINCT REPLACE(REPLACE(TRIM(LEADING SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 1)
    FROM SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 2)), '%', ' '), '~' , ' ')
    as Unterpunkt FROM Tabelle;
    Code:
    SELECT DISTINCT REPLACE(REPLACE(TRIM(LEADING SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 2)
    FROM SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 3)), '%', ' '), '~' , ' ')
    as Unterunterpunkt FROM Tabelle;

    Aber wie kann ich diese Abfragen zu einer zusammensetzen?

    Gruß
     
  2. akretschmer

    akretschmer Datenbank-Guru


    select bla(spalte) as bla, foo(spalte) as foo, blub(spalte) as blub from table
     
  3. ukulele

    ukulele Datenbank-Guru

    Code 2 und 3 haben bei mir Syntaxfehler und enthalten 2x FROM. Ist das richtig so?

    Generell kannst du mit
    Code:
    SELECT    DISTINCT
            spalte AS wertA,
            spalte AS wertB,
            spalte AS wertC
    FROM    tabelle
    natürlich verschiedene Funktionen auf die selbe Spalte in unterscheidliche Spalten bringen. Allerdings wird sich das DISTINCT auf alle "Varianten" auswirken. Sollte aber kein Problem sein wenn wirklich immer die gleiche Spalte als Ausgangsinformation dient.
     
  4. exzel

    exzel Datenbank-Guru

    Hallo und danke für die Antworten,

    @ukulele das erste FROM ist Bestandteil des Befehls

    SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
    -> 'barxxx'

    @akretschmer

    Ich verstehe nicht was die Begriffe vor den Klammern darstellen sollen.

    select bla(spalte) as bla, foo(spalte) as foo, blub(spalte) as blub from table


    Die Werte in in den Spalten sind die Spaltennamen selbst und die Begriffe nach as sind die Aliase.

    Was bedeutet bla, foo oder blub?

    Gruß
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Funktionen. Da ich cronisch faul bin, habe ich Deine Funktionsaufrufe nicht übernommen. Du wolltest mit unterschiedlichen Funktionen auf einer Spalte 3 Ergebnisspalten erzeugen. Zumindest hab ich Dich so verstanden. bla(), foo() und blub() sind Deine Funktionen, da Deine wirklichen reinzusetzen überlasse ich Dir zur Übung.
     
  6. exzel

    exzel Datenbank-Guru

    Super! Dann weiß ich jetzt bescheid!
     
  7. exzel

    exzel Datenbank-Guru

    Hallo! Der Vollständigkeit halber hier die zusammenfassung zu einer großen Abfrage

    Code:
    (SELECT
    DISTINCT
    REPLACE(SUBSTRING_INDEX(Spalte , '%', 1), '~' , ' ')
    AS Kategorie1,
    REPLACE(REPLACE(TRIM(LEADING SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 1)
    FROM SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 2)), '%', ' '), '~' , ' ')
    as Kategorie2,
    REPLACE(REPLACE(TRIM(LEADING SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 2)
    FROM SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 3)), '%', ' '), '~' , ' ')
    as Kategorie3,
    REPLACE(REPLACE(TRIM(LEADING SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 3)
    FROM SUBSTRING_INDEX(REPLACE(Spalte, '%%%', '%(Nicht kategorisiert)%'), '%', 4)), '%', ' '), '~' , ' ')
    as Kategorie4
    FROM tabelle1)
    UNION
    (SELECT
    category1,
    category2,
    category3,
    category4
    FROM tabelle2)
    ORDER BY Kategorie1 ASC;
     
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