Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
6-48241
Arhangel
2002-05-31 17:41
2002.08.15
Http


1-48122
Night cold
2002-08-01 09:39
2002.08.15
DLL


6-48225
Adventure
2002-05-31 13:40
2002.08.15
***** Нужна идея ***** (Посещение


6-48244
T2
2002-05-31 09:45
2002.08.15
Подключение к I-Net


3-47934
PavelB
2002-07-25 12:20
2002.08.15
события DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский