Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Запрос с 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
7-1077957561
Evgeniy_K
2004-02-28 11:39
2004.05.02
Cirix


14-1081243045
Слушатель
2004-04-06 13:17
2004.05.02
Как соединить два компа ?


1-1081862089
REA
2004-04-13 17:14
2004.05.02
Интерфейсы


6-1079013081
webmaster
2004-03-11 16:51
2004.05.02
Список групп, и расшареные папочки..


14-1081339441
sHinE
2004-04-07 16:04
2004.05.02
C какими БД работает дельфи?