Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Запрос с max()   Найти похожие ветки 

 
SergP ©   (2004-03-29 22:53) [0]

Видно туплю я сегодня... Не могу написать запрос. Подскажите....

Допустим (здесь я упрощаю задачу так чтобы осталось только то что у меня не получается)
Имеется 2 таблицы:
У одной (a)поля:
id (уникальные значения), field1 (любое другое поле).

У второй (b):
id (соотвествует id первой таблицы, но записей с одним id может быть много), field2 (целое число).

Нужно выбрать из обоих таблиц записи с полями поля id (должно быть с уникальным значением), field1, field2 (из всех записей таблицы b с одинаковым id нужно выбрать те у которых field2 максимальное) чтобы where a.id=b.id

БД access & MySQL


 
Sergey Masloff   (2004-03-29 23:02) [1]

select a.id, a.fld1, max(b.fld2)
from tbl1 a, tbl2 b
where a.id=b.id
group by a.id, a.fld1
так?


 
SergP ©   (2004-03-29 23:10) [2]

так...
Вот черт... Понял... Я про group by a.id, a.fld1
забыл... Просто в реальности у меня там много полей аналогичных a.fld1, вот и забыл что по ним тоже нужно групировать. Возможно еще и потому об этом не подумал, что id в первой таблице имеет уникальные значения (и к тому же оно - ключевое поле), и поэтому как-то подсознательно надеялся можно опустить a.fld1...


 
SergP ©   (2004-03-30 09:30) [3]

На этот раз попробовал изменить запрос в серверной части проги (PHP+MySQL)

select a.topic_id,a.forum_id,a.topic_poster,max(b.post_time) as mtime,a.topic_title
                      from $t_topics as a, $t_posts as b
                      where a.topic_id=b.topic_id and mtime>=$ltime and mtime<=$rtime
                      group by a.topic_id,a.forum_id,a.topic_poster,a.topic_title
                      order by mtime limit 50

Не работает зараза... Что здесь неправильно?


 
Johnmen ©   (2004-03-30 09:35) [4]

Вот это

order by mtime limit 50


 
SergP ©   (2004-03-30 09:52) [5]

Но ведь я делаю:
select ... max(b.post_time) as mtime, ...

Почему тогда нельзя сделать:

where a.topic_id=b.topic_id and mtime>=$ltime and mtime<=$rtime
order by mtime limit 50

И как можно поступить в данной ситуации?


 
Johnmen ©   (2004-03-30 10:02) [6]

Потому, что так задумано и спроектировано в рамках стандарта SQL. И предназначение алиасов полей другое.
Попробуй order by 3


 
SergP ©   (2004-03-30 13:06) [7]

Ок. попробую вечером. А то щас у меня нет возможности добраться до ftp от хостинга...
Но хочу спросить:
Johnmen, Вы обращали мое внимание на order by mtime limit 50,
а как быть с where a.topic_id=b.topic_id and mtime>=$ltime and mtime<=$rtime
будет ли это работать, ведь я здесь тоже использую алиас поля


 
SergP ©   (2004-04-02 22:04) [8]

Хм.... order by 3 работает.
А вот:
where a.topic_id=b.topic_id  and mtime>=$ltime and mtime<=$rtime

ти так не хочет работать, ни так:

where a.topic_id=b.topic_id  and max(b.post_time)>=$ltime and max(b.post_time)<=$rtime

Что делать?


 
SergP ©   (2004-04-02 22:09) [9]

Можно было бы обойтись вложенным запросом, но MySQL их не поддерживает. :(((


 
Zacho ©   (2004-04-02 22:31) [10]

Я сейчас не совсем трезв :), но может тебя спасет
HAVING max(b.post_time)>=$ltime and max(b.post_time)<=$rtime ?


 
SergP ©   (2004-04-02 22:59) [11]

написал так:

select a.topic_id,a.forum_id,a.topic_poster,max(b.post_time) as mtime,a.topic_title
                      from $t_topics as a, $t_posts as b
                      where a.topic_id=b.topic_id
                      group by a.topic_id
                      HAVING mtime>=$ltime and mtime<=$rtime
                      order by mtime
                      limit 50

Все работает. Большое спасибо...

наверное меня спасло то, что

>Zacho ©   (02.04.04 22:31)
>Я сейчас не совсем трезв

Люди в таких ситуациях иногда очень правильно мыслят... :)))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1081869469
MAXH0
2004-04-13 19:17
2004.05.02
Вопрос по TreeView


1-1081838119
Term
2004-04-13 10:35
2004.05.02
Есть ли такой компонент..................?


1-1082099950
ZDDR
2004-04-16 11:19
2004.05.02
Процессы


14-1081406305
Мараканец
2004-04-08 10:38
2004.05.02
Делфи восьмой


7-1078326302
Dmitriy_G
2004-03-03 18:05
2004.05.02
Где скачать Windows 2000 DDK?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский