Вопрос про SQL запрос
select DT,IV,null from t1
union all
select DT,null,IV from t2
совпадать могут
select DT,t1.IV,t2.IV from t1
outer join t2 using(DT)
insert into t2 values ('2008-06-11 12:37:00', 17)
17 и 7 не объединяет
Опиши поведение в случае наличия совпадающих/повторяющихся дат.
2008-06-11 12:30:00.000 NULL 0.000000
2008-06-11 12:31:00.000 1.000000 NULL
2008-06-11 12:32:00.000 NULL 2.000000
2008-06-11 12:33:00.000 3.000000 NULL
2008-06-11 12:34:00.000 NULL 4.000000
2008-06-11 12:35:00.000 5.000000 NULL
2008-06-11 12:36:00.000 NULL 6.000000
2008-06-11 12:37:00.000 7.000000 17.000000
А если в одной таблице будут две одинаковые даты?
2008-06-11 12:37:00.000 7.000000 17.000000
insert into t2 values ('2008-06-11 12:37:00', 17)
insert into t2 values ('2008-06-11 12:37:00', 19)
?
двух значений быть не может
Тогда outer join подойдет.
вот ведь пиздец. взять простейший справочник по скулю не судьба, а ебать всем мозг - это пожалуйста
Юнионы - зло, если в них нет реальной необходимости (а такой практически никогда нет то за их использование надо отрывать руки.
Юнионы - зло, если в них нет реальной необходимости (а такой практически никогда нет то за их использование надо отрывать руки.а где же твой вариант решения данной задачи без юнионов?
Объединить два мгновенно работающих запроса - хуже чем городить нетривиальные всеохватывающие условия.
а где же твой вариант решения данной задачи без юнионов?А где же "данная задача"?
Я в этом треде никакой задачи не увидел, задача скрыта, а здесь автор треда пытается узнать, как именно реализовать один из вариантов решения задачи (судя по всему - неправильный).
Объединить два мгновенно работающих запроса - хуже чем городить нетривиальные всеохватывающие условия.Ряды разных таблиц - разные сущности, как их можно объединять?
Единственная задача, в которой я могу предположить использование юнионов - это что-нибудь вроде страницы со списком, например, списаний и зачислений. Но и там юнионы необязательны - страница с таким общим списком может понадобиться только за какой-то определённый срок (например, со вчерашней полуночи до текущего момента и можно тупо взять отдельно нужные ряды из одной таблицы, из другой, после чео объединять их уже перед выводом пользователя, удобные фишки юниона вроде LIMIT тут нахуй не нужны.
тупо взять отдельно нужные ряды из одной таблицы, из другой, после чео объединять их уже перед выводом пользователя
А что же у тебя находится между БД и экселем, магия?
Юнионы - зло, если в них нет реальной необходимости (а такой практически никогда нет то за их использование надо отрывать руки.Речь идет о UNION или UNION ALL?
Конструктор отчетов. Используя его настройки можно формировать различного рода формы вывода информации. Если к созданию каждого отчета привлекать программиста, то эту систему невозможно/сложно будет поддерживать и развивать.
Конструктор отчетовОК, убедил.
Оставить комментарий
sanek300509
Как сделать проще?имеется
create table t1
(
DT datetime,
IV numeric(18,6)
)
create table t2
(
DT datetime,
IV numeric(18,6)
)
insert into t1 values ('2008-06-11 12:31:00', 1)
insert into t1 values ('2008-06-11 12:33:00', 3)
insert into t1 values ('2008-06-11 12:35:00', 5)
insert into t1 values ('2008-06-11 12:37:00', 7)
insert into t2 values ('2008-06-11 12:30:00', 0)
insert into t2 values ('2008-06-11 12:32:00', 2)
insert into t2 values ('2008-06-11 12:34:00', 4)
insert into t2 values ('2008-06-11 12:36:00', 6)
запрос в лоб
select b.*, t1.IV, t2.IV from
(
select DT from t1
union
select DT from t2
) b
left join t1 on t1.DT=b.DT
left join t2 on t2.DT=b.DT
резалтсет
2008-06-11 12:30:00.000 NULL 0.000000
2008-06-11 12:31:00.000 1.000000 NULL
2008-06-11 12:32:00.000 NULL 2.000000
2008-06-11 12:33:00.000 3.000000 NULL
2008-06-11 12:34:00.000 NULL 4.000000
2008-06-11 12:35:00.000 5.000000 NULL
2008-06-11 12:36:00.000 NULL 6.000000
2008-06-11 12:37:00.000 7.000000 NULL
проще как сделать?