объединение набора результатов, полученного операторами select, для создания представления

У меня есть 4 оператора Select для 4 разных таблиц, каждый запрос Select дает последнюю запись, соответствующую указанному условию, например:

Select TOP 1 * from table where column_name = 'something' order by col1 DESC;

Теперь мне нужно объединить набор результатов всех 4 запросов и создать представление из объединенного набора результатов.


person AChamp    schedule 09.08.2012    source источник
comment
какая у тебя проблема вообще? Я думаю, вы ответили на свою проблему, объединив результаты, создав представление.   -  person Patrick Guimalan    schedule 09.08.2012
comment
@patrickchoi: Очевидно, он не знает, как их комбинировать (например, ключевое слово UNION)   -  person Adam Robinson    schedule 09.08.2012


Ответы (2)


Некоторые БД не позволяют вам предоставлять предложение «order by» внутри объединенных запросов.

Если вы упорядочиваете по описанию col1, возможно, это какой-то тип столбца, к которому вы можете применить min() или max().

Если это так, приведенное ниже может решить вашу проблему (если записей не слишком много или если таблицы большие, индексируются «col1» и «some_column».)

create view some_view as
(
select * from table1
  where some_column = 'something'
  and col1 = (select max(col1) from table1 where some_column = 'something')
UNION ALL
select * from table2 
  where some_column = 'something'
  and col1 = (select max(col1) from table2 where some_column = 'something')
UNION ALL
select * from table3 
  where some_column = 'something'
  and col1 = (select max(col1) from table3 where some_column = 'something')
UNION ALL
select * from table4 
  where some_column = 'something'
  and col1 = (select max(col1) from table4 where some_column = 'something')
)
person Hotel    schedule 09.08.2012

person    schedule
comment
Я не могу использовать порядок с оператором UNION - person AChamp; 09.08.2012
comment
@AChamp Вы можете, если у вас есть ограничивающее предложение (например, TOP 1) - person Adam Robinson; 09.08.2012
comment
Вот пример скрипта SQL, который показывает, что он работает... sqlfiddle.com/#!3/1f7f3 /1 - person Justin Swanhart; 09.08.2012