Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 объединение двух таблиц в запросе  [new]
Saygon
Member

Откуда:
Сообщений: 1
вопрос в следующем... необходимо вывести данные из двух таблиц... написал хранимую процедуру...

CREATE PROCEDURE ReturnRecord
@day1 int,
@month1 int,
@day2 int,
@month2 int,
@tabel int
AS
SELECT DATE1, TIME1, N_PHONE, ADDR_N, ADDR_K, PRICE
FROM arhiv
WHERE (tabel = @tabel) AND (DAY(DATE1) = @day1) AND (MONTH(DATE1) = @month1) AND (COND_ORD = 1) OR
(tabel = @tabel) AND (DAY(DATE1) = @day2) AND (MONTH(DATE1) = @month2) AND (COND_ORD = 1)
UNION
SELECT DATE1, TIME1, N_PHONE, ADDR_N, ADDR_K, PRICE
FROM order1
WHERE (tabel = @tabel) AND (DAY(DATE1) = @day1) AND (MONTH(DATE1) = @month1) AND (COND_ORD = 1) OR
(tabel = @tabel) AND (DAY(DATE1) = @day2) AND (MONTH(DATE1) = @month2) AND (COND_ORD = 1)
GO


все работает, но данные выводятся не отсортированные, а хотелось бы их отсортировать по какому-либо полю... Но структура запроса с UNION не позволяет это сделать... вроде... или я не прав?! как мне это обойти?
26 янв 04, 15:14    [507040]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц в запросе  [new]
Артем1
Member

Откуда: www.desnogorsk.{ru||net} -> Москва
Сообщений: 2036
Так, наверное.
CREATE PROCEDURE ReturnRecord 

@day1 int,
@month1 int,
@day2 int,
@month2 int,
@tabel int
AS
SELECT dataset.DATE1, dataset.TIME1, dataset.N_PHONE, dataset.ADDR_N, dataset.ADDR_K, dataset.PRICE
FROM (
SELECT DATE1, TIME1, N_PHONE, ADDR_N, ADDR_K, PRICE
FROM arhiv
WHERE (tabel = @tabel) AND (DAY(DATE1) = @day1) AND (MONTH(DATE1) = @month1) AND (COND_ORD = 1) OR
(tabel = @tabel) AND (DAY(DATE1) = @day2) AND (MONTH(DATE1) = @month2) AND (COND_ORD = 1)
UNION
SELECT DATE1, TIME1, N_PHONE, ADDR_N, ADDR_K, PRICE
FROM order1
WHERE (tabel = @tabel) AND (DAY(DATE1) = @day1) AND (MONTH(DATE1) = @month1) AND (COND_ORD = 1) OR
(tabel = @tabel) AND (DAY(DATE1) = @day2) AND (MONTH(DATE1) = @month2) AND (COND_ORD = 1)) as dataset
ORDER BY dataset.Date1
26 янв 04, 15:16    [507046]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц в запросе  [new]
Rain-Day
Member

Откуда:
Сообщений: 85
Смотря для какого случая сортировать и в чем и где!
26 янв 04, 15:16    [507048]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц в запросе  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480

SELECT * FROM
(SELECT ...
UNION
SELECT ...) X
ORDER BY X...
26 янв 04, 15:17    [507052]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц в запросе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37103
select * from(
SELECT DATE1, TIME1, N_PHONE, ADDR_N, ADDR_K, PRICE
FROM arhiv
WHERE (tabel = @tabel) AND (DAY(DATE1) = @day1) AND (MONTH(DATE1) = @month1) AND (COND_ORD = 1) OR
(tabel = @tabel) AND (DAY(DATE1) = @day2) AND (MONTH(DATE1) = @month2) AND (COND_ORD = 1)
UNION
SELECT DATE1, TIME1, N_PHONE, ADDR_N, ADDR_K, PRICE
FROM order1
WHERE (tabel = @tabel) AND (DAY(DATE1) = @day1) AND (MONTH(DATE1) = @month1) AND (COND_ORD = 1) OR
(tabel = @tabel) AND (DAY(DATE1) = @day2) AND (MONTH(DATE1) = @month2) AND (COND_ORD = 1)
) a
order by ...
26 янв 04, 15:20    [507056]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц в запросе  [new]
Александр Азаркович
Member

Откуда:
Сообщений: 208
Может я чего-то не понимаю... Подзапросы-то зачем?
select id_t1 as id from t1

union select id_t2 as id from t2
order by id

А если поля одинаково называются, так и псевдоним не нужен!
26 янв 04, 15:28    [507075]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить