2013-02-27 269 views
0

У меня есть следующие таблицы ниже forum_reply и forum_post. Как я могу получить последнее сообщение или ответ, который когда-либо является последним для сравнения forum_category_id, скажем 1. мне нужно получить дату, автора и forum_ (пост или ответ) _id, forum_category_idMYSQL поможет получить последнее сообщение или ответить

forum_post_id int(11) No Primary NULL auto_increment 
    forum_category_id int(11) No None NULL  
    forum_post_title varchar(255) No None NULL  
    forum_post_description mediumtext No None NULL  
    customer_id int(11) No None 0 
    forum_post_author varchar(64) No None NULL  
    forum_post_email varchar(128) No None NULL  
    is_lock tinyint(1) No None 0 
    is_stick tinyint(1) No None 0 
    is_notify tinyint(1) No None 0 
    status tinyint(1) No None 0 
    view int(8) No None 0 
    post_added datetime No None 0000-00-00 00:00:00 

post_rate int(8) No None 0 
    ip varchar(32) No None NULL  
    post_icon varchar(128) No None default.png 

И

forum_reply_id int(11) No Primary NULL auto_increment 
    forum_post_id int(11) No None NULL  
    forum_category_id int(11) No None NULL  
    forum_reply_description mediumtext No None NULL  
    customer_id int(11) No None 0 
    forum_reply_author varchar(255) No None NULL  
    forum_reply_email varchar(128) No None NULL  
    is_notify tinyint(1) No None 0 
    status tinyint(1) No None 0 
    reply_added datetime No None 0000-00-00 00:00:00 
    reply_rate int(8) No None 0 
    ip varchar(32) No None NULL  
    reply_icon varchar(128) No None default.png 
+0

что вы пробовали? и каков ваш язык программирования, или вы хотите знать SQL? – Raptor

+0

Было бы неплохо [Пример скрипта SQL] (http://sqlfiddle.com) для быстрого и лучшего ответа. – araknoid

+0

Добро пожаловать в переполнение стека. Просто небольшая подсказка для будущего: публикация реальных команд CREATE TABLE требует того же усилия, что и публикация информации в табличных данных, и позволяет другим пользователям легко загружать файлы в свою локальную базу данных 'test'. –

ответ

0

Использование UNION объединить две таблицы в SELECT заявлении должно помочь вам:

SELECT 
    forum_post_author, 
    post_added, 
    forum_post_id, 
    forum_category_id, 
    'post' as type 
FROM 
    forum_post 
WHERE 
    forum_category_id = 1 

UNION 
SELECT 
    forum_reply_author, 
    reply_added, 
    forum_reply_id, 
    forum_category_id, 
    'reply' as type 
FROM 
    forum_reply 
WHERE 
    forum_category_id = 1 

ORDER BY 
    post_added DESC 
LIMIT 1 

SQL Fiddle

+0

После тестирования оба варианта - это лучший запрос, поскольку он дает мне поле типа, сообщающее мне, было ли это ответ или сообщение. Thanx ребята за вашу помощь. –

0
SELECT DISTINCT post_added, forum_post_author, forum_post_id, forum_category_id 
FROM forum_post WHERE forum_category_id = 1 
UNION 
SELECT DISTINCT reply_added, forum_reply_author, forum_reply_id, forum_category_id 
FROM forum_reply WHERE forum_category_id = 1 
ORDER BY post_added DESC LIMIT 1 

Если вы пытаетесь сделать то, что я думаю, что вы делаете это должно сделать это, я думаю (но я не то, что про тоже).

Более подробную информацию об этом здесь: Display two different columns from two different tables with ORDER BY

+0

О да, простите, забыли это немного. Отредактировано сообщение, чтобы отразить правильный запрос. –