Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизЗапрос на Max значения Найти похожие ветки
← →
Explorer (2002-07-25 10:11) [0]Мастера!
Вот запрос:
select max(t.id_registerroub)as roub, max(t1.id_registercur)as cur,
max(t2.id_registercurroub)as curroub
from registerroub t, registercur t1, registercurroub t2
Результат: null null null
Хотя значения там есть. Если делаю запрос на выборку max в одной таблице - все нормально.
Могу ли я, в одном запросе делать такую выборку на max в неск. таб. ?
← →
IlyaA (2002-07-25 10:18) [1]Нет. Так ты ни чего не получишь. Т.к. при такой выботке у тебя получится лажа.
Попробуй Union -
Select Max(Field1) as Max From Table1
Union
Select Max(Field2) as Max From Table2
Union
Select Max(Field3) as Max From Table3
Тогда получишь таблицу с одним филдом и тремя записями
← →
Explorer (2002-07-25 10:29) [2]>IlyaA
Ты меня не понял!
Мне, как раз, нужны разные филды, чтобы работать с ними потом по одиночке.
Еще что я заметил, он выдает NULL, только в том случае, когда по одному из запрашиваемых полей в таб. записей нет!
Почему так?
← →
AlexSam (2002-07-25 10:49) [3]Я не поленился и написал аналогичный запрос. Все работает.
Другое дело, если таблицы большие, то SQL перебирает все комбинации = count1*count2*count3 !!! Напиши 3 отдельных запроса и не тр..я. Или ХР с возвращаемыми параметрами.
CREATE PROCEDURE max_
(@max_1 int OUTPUT,@max_2 int OUTPUT,@max_3 int OUTPUT)
AS
SELECT @max_1=(SELECT max(a1) FROM t1)
SELECT @max_2=(SELECT max(b1) FROM t2)
SELECT @max_3=(SELECT max(c1) FROM t3)
← →
bahrov (2002-07-25 11:43) [4]у тебя идет перемножение 3х таблиц и если одна таблица пустая
то ты полюбому получишь пусто! X*Y*0=0
если ты без MAX-ов выполнишь запрос то получишь пусто а какие максы из пусто
Чтобы было хорошо на Oracle было бы так
select m1,m2,m3 from
(select max(field1) m1 from table1),
(select max(field2) m2 from table2),
(select max(field3) m3 from table3)
можно ли на mssql так делать незнаю
← →
DmitryK (2002-07-25 12:31) [5]2bahrov
можно, только надо чуток поправить:
select A.m1, B.m2, C.m3 from
(select max(field1) m1 from table1) A,
(select max(field2) m2 from table2) B,
(select max(field3) m3 from table3) C
← →
Explorer (2002-07-25 12:35) [6]Всем, большое спасибо!
← →
bahrov (2002-07-25 12:37) [7]DmitryK ©
на 8i совершенно не обязательно
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c