2015-03-19 2 views
0

Привет, я пытаюсь выбрать последние пять тем, которые были сделаны. Запрос, который, как я думал, работал бы, но я действительно застрял на этом, если кто-нибудь может мне помочь. $query = yasDB_select("SELECT * FROM forumposts INNER JOIN forumtopics ON forumposts.id=forumtopics.id ORDER by forumposts.date DESC limit 5"); Выбор последних 5 сообщений на тему?

+0

Заказ по дате, по убыванию. –

+0

, пожалуйста, добавьте пример данных и ожидаемый результат –

+0

http://www.games-flash.co.uk/forumcats/1/1.html, если вы поедете сюда, вы можете увидеть мой последний выпуск сообщений. Я попробовал ваш запрос, но не радость , – funkstar33

ответ

1

Я узнал несколько проблем с вашим запросом.

Правильное решение:

SELECT DISTINCT(forumtopics.name) 
FROM forumtopics LEFT JOIN forumposts ON forumposts.topicid = forumtopics.id 
ORDER BY forumposts.id DESC LIMIT 5; 

Если вы заинтересованы в более сложных данных о тем, которые вы можете сделать следующее:

SELECT * FROM (SELECT DISTINCT(forumtopics.id) FROM forumtopics LEFT 
JOIN forumposts ON forumposts.topicid = forumtopics.id) topics LEFT 
JOIN forumtopics ON topics.id = forumtopics.id ORDER BY topics.id DESC 
LIMIT 5 ; 

Я использовал следующую тестовую схему:

CREATE TABLE forumposts ( id int, topicid int, content text); 
CREATE TABLE forumtopics ( id int, name varchar(200)); 
INSERT INTO forumtopics SET id = 1, name = "1st topic"; INSERT INTO 
forumtopics SET id = 2, name = "2nd topic"; INSERT INTO forumtopics 
SET id = 3, name = "3rd topic"; INSERT INTO forumtopics SET id = 4, 
name = "4th topic"; INSERT INTO forumtopics SET id = 5, name = "5th 
topic"; INSERT INTO forumtopics SET id = 6, name = "6th topic"; 

INSERT INTO forumposts SET id = 1, topicid=1, content = "1st post"; 
INSERT INTO forumposts SET id = 2, topicid=3, content = "2nd post"; 
INSERT INTO forumposts SET id = 3, topicid=3, content = "3rd post"; 
INSERT INTO forumposts SET id = 4, topicid=4, content = "4th post"; 
INSERT INTO forumposts SET id = 5, topicid=5, content = "5th post"; 
INSERT INTO forumposts SET id = 6, topicid=6, content = "6th post"; 
INSERT INTO forumposts SET id = 7, topicid=6, content = "7th post"; 

Вы можете проверить запросы на http://sqlfiddle.com.

+0

Спасибо, ребята, я получил это, работая на localhost, но не могу заставить его работать на моем сервере. Я думаю, что что-то не так с моим сервером, поэтому я смотрю на него. $query = yasDB_select("SELECT forumtopics.id, forumtopics.subject, forumposts.date, forumposts.name FROM forumtopics INNER JOIN forumposts ON forumposts.topic = forumtopics.id ORDER BY forumposts.date DESC LIMIT 5"); этот запрос хорошо работает на localhost. – funkstar33

Смежные вопросы