2015-04-08 2 views
0

У меня есть 3 таблицы с именем «A», «B» и «C» со столбцами «Имя», «Roll_No» и «Age». Я хочу найти строку, ссылающуюся на столбцы «Roll_No», но я не знаю, в какой таблице находится желаемая строка. Мне нужен оператор SQL, который вернет строку вместе с соответствующим именем таблицы.SQL-запрос

+0

Это не способ задать вопрос здесь. обеспечивают DDL/DML и ожидаемый результат выборки – ninjabber

+0

Также, вероятно, не относится к этому вопросу, вы всегда должны добавлять тег для используемой СУБД. Postgres, Oracle, DB2, ... –

ответ

0

Попробуйте это, если вам нужно указать ИНЕКЕ один раз:

SELECT * 
FROM 
    (SELECT Name, Roll_No, Age, 'A' AS TableName 
     FROM A 
    UNION 
    SELECT Name, Roll_No, Age, 'B' 
     FROM B 
    UNION 
    SELECT Name, Roll_No, Age, 'C' 
     FROM C) Tbl 
WHERE Roll_No = [value] 
+0

Единственная проблема с этим - это не лучшая производительность по сравнению с версией, которая не использует подзапросы и несколько вариантов выбора. – jfun

+0

Thank You Vardan Shahinyan Sir –

1

использование union, как показано ниже:

select Name, Roll_No, Age ,'A' as table_name from A where Roll_No=--the value 
union 
select Name, Roll_No, Age ,'B' as table_name from B where Roll_No=--the value 
union 
select Name, Roll_No, Age ,'C' as table_name from C where Roll_No=--the value 
+0

Спасибо Farheg Sir –

+0

приветствуется bro – jfun