Перейти к контенту

Как извлекать максимальное значение из MySQL?


Рекомендуемые сообщения

Что надо добавлять в запросе и после чего? Пример привидите плз.

- К примеру нужно запросить топик, имеющий больше всех просмотров.

- Или нужно запросить три топика, наиболее часто просматриваемых.

Как сконструировать такие запросы? И для 1.3 и для 2.Х сойдет.

Ссылка на комментарий
Поделиться на других сайтах

SELECT * FROM `table` ORDER BY `column` DESC LIMIT 1 ;

Изменено пользователем Destruction
Ссылка на комментарий
Поделиться на других сайтах

  • 7 месяцев спустя...

SELECT * FROM ibf_topics WHERE (forum_id='38')

этот запрос возвращает набор строк где параметр forum_id = 38

 

SELECT MAX(tid) FROM ibf_topics WHERE (forum_id='38')

а этот запрос возвращает одно поле с максимальным значением параметра tid и где forum_id = 38

 

а мне нужно чтоб возвращало всю строку а не одно поле...

можно это както одним запросом сделать?

 

з.ы. пытаюсь взять строку из SQL последней темы из заданного раздела

Ссылка на комментарий
Поделиться на других сайтах

На 2 поста выше же написал Destruction :D

SELECT * FROM `ibf_topics` WHERE forum_id=38 ORDER BY `start_date` DESC LIMIT 1 ;

 

Если нужен ещё и сам пост енужно делать join.

Ссылка на комментарий
Поделиться на других сайтах

сам пост я вытащил во втором запросе

SELECT * FROM ibf_posts WHERE (topic_id='номер_из_запроса_выше')

возможно не рационально использовать еще один запрос, но по другому не знаю... в sql я не силен :D

 

2 Sannis: Спасибо, все отлично пахает, если не трудно можно чтоб еще и пост вытягивало? ;)

Изменено пользователем brokerUA
Ссылка на комментарий
Поделиться на других сайтах

Если одним запросом, то так(ошибся, можно без join'а):

SELECT t.*, p.* FROM ibf_topics t, ibf_posts p
WHERE p.topic_id=t.id AND forum_id=38
ORDER BY t.start_date DESC LIMIT 1 ;

С join:

SELECT t.*, p.* FROM ibf_topics t
LEFT JOIN ibf_posts p ON (p.topic_id=t.id)
WHERE forum_id=38
ORDER BY t.start_date DESC LIMIT 1 ;

Правда есть разные мнения на счёт какой из вариантов лучше.

 

А вообще лучше использовать функции ядра если всё это делается для форума:

		$this->ipsclass->DB->build_query( array(
						'select' => 't.*, p.*',
						'from' => array( 'topics' => 't', 'posts' => 'p' ),
						'where' => 'p.topic_id=t.id AND forum_id=38',
						'order' => 't.start_date',
						'limit' => array( 1 )
						) );
	$this->ipsclass->DB->exec_query();

Загляните ко мне в подпись, там есть пример с join для вытягивания последних тем.

Ссылка на комментарий
Поделиться на других сайтах

воспользовался первым вариантом, отлично работает ;)

интересные мод "(SnS) SSI экпорт последних тем и сообщений" правда немного нетак как мне надо, но можно подкоректировать :D

Еще раз Спасибо, выручил!

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.