2013-07-30 3 views
1

В настоящее время у меня есть 12 довольно простых SQL-запросов, которые используются для вывода данных, соответствующих различным критериям, для создания страницы состояния для отображения порядка приоритетов полученных сообщений поддержки.Несколько запросов для заполнения одного DataTable

Однако то, что мне нужно сделать, это есть один DataTable, который отображает следующее:

Col1 | Col2 | Col3 | Col4 
    Data from SQL Query 1 
.... | .... | .... | .... 
.... | .... | .... | .... 
    Data from SQL Query 2 
.... | .... | .... | .... 
.... | .... | .... | .... 
    Data from SQL Query 3 
.... | .... | .... | .... 
.... | .... | .... | .... 
       etc 

Таким образом, каждый запрос выполняется, то его данные добавлены в DataTable после предыдущего запроса (без сортировки не происходит , и все строки добавляются в том порядке, в котором каждый SQL-запрос возвращает их).

Я попытался использовать оператор SQL UNION, чтобы объединить все SQL-запросы вместе, однако возвращенные результаты становятся упорядоченными по ID во всех строках, которые не то, что я хочу.

ответ

3

Данные не имеют ORDER, кроме указанного вами. Если вы хотите заказать данные определенным образом, добавьте их в свой запрос.

Если вы хотите строки из запроса 1, а затем добавить дополнительный столбец, указывающий, что для запроса

select 1 as priority, field1, field2 from ... 
union 
select 2 as priority, field1, field2 from ... 
order by priority 
+1

Он может хотеть использовать 'UNION ALL', так как запросы независимы, чтобы начать с. –

+0

@JoachimIsaksson Действительное рассмотрение, но столбец приоритета заставит все подзапросы возвращать разные результаты. – podiluska

+0

Да, результат будет правильным, но UNION (если оптимизатор не умный) делает дополнительную работу, чтобы сохранить четкость, когда они уже есть. –

Смежные вопросы