Chain: by UNION Abfrage feld hinzufügen

Guten Tag!

Ich erstelle eine Abfrage aus drei Tabellen, die ich mit UNION verbinde.

Ich möchte aber bei der Ausgabe wissen aus welcher Tabelle die Information stammt.

Am liebste würde ich einfach bei jeder Abfrage ein Feld einfüge, so in etwa.

SELECT a.name, a.tabelle=1

UNION

SELECT a.name, a.tabelle=2

ist das möglich?

Chain

  1. Hallo Chain,

    ja. Nur ist die Syntax etwas anders.

    Verwende eine Konstante und gib der Spalte mit AS einen Namen.

    SELECT a.name, 1 as tabelle
    FROM tab1 a
    
    UNION ALL
    
    SELECT b.name, 2 as tabelle
    FROM tab2 b
    

    Anmerkungen dazu:

    • Ob man den gleichen Alias über und unter einem Union verwenden kann, weiß ich nicht. Darum hab ich im Beispiel sicherheitshalber einen anderen Table-Alias eingetragen.
    • UNION ohne ALL entfernt doppelte Sätze. Durch den Tabellenmarker sind doppelte Sätze ausgeschlossen und die Duplikatsuche kostet nur unnötig Zeit. Deswegen sollte man dann UNION ALL verwenden.

    Rolf

    --
    sumpsi - posui - obstruxi