2016-04-11 3 views
0

Ich bin etwas neu in SQL, so dass ich immer noch versuche, einige der einfachen Dinge zu lernen.Suche mehrere SQL-Tabellen für bestimmte Zeile dann zurück Zeile sowie Tabellenname

Im Moment habe ich mehrere Tabellen für verschiedene Ebenen des Zugriffs auf meine Anwendung (Kunden, Vertreter, Manager).

Ein Benutzername kann NICHT zwischen diesen Tabellen geteilt werden. Was ich aufgehalten werde, ist die Auswahl der Benutzerzeile basierend auf dem Benutzernamen.

Ich würde leicht wissen, wie man das macht, wenn es nur eine Tabelle für Benutzer gibt, aber ich bin nicht wirklich sicher, wie man mehrere Tabellen gleichzeitig sucht.

Auch wenn ein Benutzername gefunden wird, gibt es eine Möglichkeit, den Namen der Tabelle zurückzugeben, dass es diesen Benutzernamen gefunden hat?

Vielen Dank!

Antwort

0

alle Tabellen Layouts Unter der Annahme sind die gleichen:

SELECT * 
FROM (
     SELECT 'customers' tn, * 
     FROM customers 
     UNION ALL 
     SELECT 'managers' tn, * 
     FROM managers 
     UNION ALL 
     SELECT 'representatives' tn, * 
     FROM representatives 
     ) q 
WHERE username = @myusername 
2

Eine einfache UNION alles, was Sie

benötigen könnten
SELECT 'table1' as tab, c1, c2, c3 FROM table1 WHERE uid='xxx' 
UNION 
SELECT 'table2' as tab, c1, c2, c3 FROM table2 WHERE uid='xxx' 
UNION 
SELECT 'table3' as tab, c1, c2, c3 FROM table3 WHERE uid='xxx' 

Wie Sie nur eine Zeile als Benutzer zurückgegeben bekommen xxx nur existieren kann, in In einer der Tabellen erhalten Sie alle Spalten, die Sie interessieren, sowie die erste Spalte mit Ihrem Tabellennamen