6 Stimmen

Tabellenname in SQL-Abfrage einschließen

Was ich tun muss, ist ein Tabellenname in Ergebnis aus einer Union-Abfrage mit 4 auswählt aus verschiedenen Tabellen zu erhalten. Ich muss die ID und den Tabellennamen für die weitere Verarbeitung erhalten.

Zum Beispiel habe ich table1, table2, table3 table4 und habe eine Abfrage:

SELECT id from table1,blablabla
UNION
SELECT id from table2,blablabla
UNION
SELECT id from table3,blablabla
UNION
SELECT id from table4,blablabla

Und ich brauche das Ergebnis wie:

1, blablabla, table1
4, blablabla, table4
7, blablabla, table2

23voto

devnull Punkte 2695
SELECT
    ID,
    'table1' as TableName
FROM
    table1

UNION

...

SELECT
    ID,
    'table4' as TableName
FROM
    table4

2voto

HLGEM Punkte 91543
SELECT  myid, My otherfield, 'table1' as tablename From table1
UNION
SELECT  myid, My otherfield, 'mytabl2' From table2

Wenn es sich um Tabellen handelt, die sich gegenseitig ausschließen, sollten Sie stattdessen UNION ALL verwenden, da dies viel schneller geht. Außerdem stellt sich diese Art von Frage oft, wenn der Datenbankentwurf nicht korrekt ist: Wenn die gleichen Felder in diesen Tabellen sind, warum sind sie dann nicht alle in einer Tabelle? Entwerfen Sie, wenn möglich, ein neues Design, oder überlegen Sie zumindest, ob Sie damit besser bedient wären. Da ich nicht weiß, um welche Tabellen es sich handelt, kann ich nicht sagen, ob sie in einer Tabelle sein sollten, aber in der Regel ist dies ein Codegeruch.

1voto

Julien Hoarau Punkte 47065

Fügen Sie den Tabellennamen in Ihrer Anfrage hinzu

SELECT
  id,
  blablabla,
  'table1' as tableName
FROM
  table1
UNION
SELECT
  id,
  blablabla,
  'table2' as tableName
FROM
  table2
 ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X