Общие > Базы данных

выборка последних записей

<< < (2/2)

Enemy:
Макс

SELECT DISTINCT
p.threadid,p.*,t.title AS titlethread,t.replycount, MAX(p.dateline)
FROM
post p
LEFT JOIN thread t ON p.threadid=t.threadid
GROUP BY  p.threadid
ORDER BY dateline DESC LIMIT 0,5

Все равно не то... Темы разные но сообщения выбирает не последние - выводит или первое сообщение темы или 2,3 короче совсем непонятно...

Макс:
я не знаком со структурой таблиц ВБулетня.
dateline - это дата создания сообщения ?

Попробуй еще такой вариант (он с точки зрения теории неправильный, но в данном случае может сработать):

--- Код: ---SELECT
p.threadid,p.*,t.title AS titlethread,t.replycount, [b]MAX(p.postid)[/b]
FROM
post p
LEFT JOIN thread t ON p.threadid=t.threadid
GROUP BY p.thread_id
ORDER BY p.postid DESC LIMIT 0,5
--- Конец кода ---

Enemy:
Макс
Ничего не изменилось работает и возвращает тот же результат что и предидущий запрос...

Вот структура таблиц:

--- Код: ---
[B]TABLE `post`[/B] (
  `postid` int(10) unsigned NOT NULL auto_increment,
  `threadid` int(10) unsigned NOT NULL default \'0\',
  `username` varchar(50) NOT NULL default \'\',
  `userid` int(10) unsigned NOT NULL default \'0\',
  `title` varchar(100) NOT NULL default \'\',
  `dateline` int(10) unsigned NOT NULL default \'0\',
  `attachmentid` smallint(5) unsigned NOT NULL default \'0\',
  `pagetext` mediumtext NOT NULL,
  `allowsmilie` smallint(6) NOT NULL default \'0\',
  `showsignature` smallint(6) NOT NULL default \'0\',
  `ipaddress` varchar(16) NOT NULL default \'\',
  `iconid` smallint(5) unsigned NOT NULL default \'0\',
  `visible` smallint(6) NOT NULL default \'0\',
  `edituserid` int(10) unsigned NOT NULL default \'0\',
  `editdate` int(10) unsigned NOT NULL default \'0\',
  PRIMARY KEY  (`postid`),
  KEY `iconid` (`iconid`),
  KEY `userid` (`userid`),
  KEY `threadid` (`threadid`,`userid`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

[B]TABLE `thread`[/B] (
  `threadid` int(10) unsigned NOT NULL auto_increment,
  `title` varchar(100) NOT NULL default \'\',
  `lastpost` int(10) unsigned NOT NULL default \'0\',
  `forumid` smallint(5) unsigned NOT NULL default \'0\',
  `pollid` int(10) unsigned NOT NULL default \'0\',
  `open` tinyint(4) NOT NULL default \'0\',
  `replycount` int(10) unsigned NOT NULL default \'0\',
  `postusername` varchar(50) NOT NULL default \'\',
  `postuserid` int(10) unsigned NOT NULL default \'0\',
  `lastposter` varchar(50) NOT NULL default \'\',
  `dateline` int(10) unsigned NOT NULL default \'0\',
  `views` int(10) unsigned NOT NULL default \'0\',
  `iconid` smallint(5) unsigned NOT NULL default \'0\',
  `notes` varchar(250) NOT NULL default \'\',
  `visible` smallint(6) NOT NULL default \'0\',
  `sticky` smallint(6) NOT NULL default \'0\',
  `votenum` smallint(5) unsigned NOT NULL default \'0\',
  `votetotal` smallint(5) unsigned NOT NULL default \'0\',
  `attach` smallint(5) unsigned NOT NULL default \'0\',
  PRIMARY KEY  (`threadid`),
  KEY `iconid` (`iconid`),
  KEY `forumid` (`forumid`,`visible`,`sticky`,`lastpost`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

--- Конец кода ---

Макс:
Попробуй так

--- Код: ---
SELECT p.postid, MAX(dateline)
FROM post p
GROUP BY p.thread_id
DESC LIMIT 0,5

--- Конец кода ---

получишь 5 post_id. Запомни их и выполни:


--- Код: ---SELECT p.*,t.title AS titlethread,t.replycount
FROM post p , thread t WHERE p.threadid=t.threadid AND p.postid IN (1,2,3,4,5)
DESC LIMIT 0,5

--- Конец кода ---
где 1,2,3,4,5 - те значения, которые дал первый запрос.
Результат правильный ?

Enemy:

--- Цитировать ---Попробуй так

--- Код: ---SELECT p.postid, MAX(dateline)
FROM post p
GROUP BY p.thread_id
DESC LIMIT 0,5
--- Конец кода ---


--- Конец цитаты ---


так работало но выбирало не то... короче я переделал так и заработало -

--- Код: ---
SELECT [COLOR=red]MAX(p.postid)[/COLOR] FROM post p GROUP BY [COLOR=red]p.threadid[/COLOR] DESC LIMIT 0,5

--- Конец кода ---



--- Цитировать ---получишь 5 post_id. Запомни их и выполни:

--- Код: ---
SELECT p.*,t.title AS titlethread,t.replycount
FROM post p , thread t WHERE p.threadid=t.threadid AND p.postid IN (1,2,3,4,5)
[COLOR=red]DESC LIMIT 0,5[/COLOR]
--- Конец кода ---


--- Конец цитаты ---


здесь DESC глючил без ORDER и я его убрал


SELECT p.*,t.title AS titlethread,t.replycount FROM post p, thread t WHERE p.threadid=t.threadid AND p.postid IN ($ids) LIMIT 0,5

Теперь все работает. Большущее спасибо Макс

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии