2016-02-23 4 views
2

У меня есть стол сообщений и таблица комментариев, где для одного сообщения будет добавлено количество комментариев. Существует таблица php, где я показываю данные.
В этой таблице я хочу показать последний комментарий к сообщению, когда он будет добавлен.Отображен последний введенный комментарий

сообщение таблицы, где добавлены посты:

 Posts 
+-------+---------+ 
| id | Post | 
+-------+---------+ 
| 1 | ABC | 
| 2 | DEF | 
| 3 | GHI | 
+-------+---------+ 

Комментарий таблица, где количество комментариев будет добавлена ​​к конкретной должности:

Comments 
+----------+---------+ 
| Post_id | Comment | 
+----------+---------+ 
| 1  | A  | 
| 1  | D  | 
| 3  | F  | 
| 3  | V  | 
| 3  | B  | 
+----------+---------+ 

Здесь post_id берутся из идентификатора стол столбец.

Я хочу пост с последним комментарием, который будет отображаться в этой таблице:

<table> 
    <thead> 
    <tr> 
     <th>Post</th> 
    </tr> 
    </thead> 
    <tbody> 
    <?php foreach($results as $key=>$row) { ?> 
    <tr> 
     <td><?php echo $row['Comment'];?></td> 
    </tr> 
    <?php } ?> 
</tbody> 
</table> 

Например:

+----------+---------+ 
| Post | Comment | 
+----------+---------+ 
| ABC | D  | 
| GHI | B  | 
+----------+---------+ 

Спасибо заранее.

+1

пожалуйста, напишите ваши родственные структуры таблиц ('создать таблицу code') – 1000111

+0

Учитывая, что строки в РСУБД представляют собой неупорядоченные наборы, определяют«последнее». – Strawberry

+0

Добавьте один дополнительный столбец 'id' в таблицу' Комментарии' с автоматическим приращением. Позже вы можете распечатать результат, отсортировав его с идентификатором «ORDER BY id DESC» –

ответ

1

Это будет работать на вас!

SELECT comment FROM comments WHERE comment_id = (SELECT comment_id 
FROM comments WHERE post_id = 1 ORDER BY comment_id DESC LIMIT 1);` 

Структура таблицы

Table Structure

Таблица данных

Table Data

Результат запроса

Query Result

+0

как просмотреть сообщение и последний комментарий вместе .. – user5358888

+0

Попробуйте это - 'SELECT сообщение из сообщений, где post_id = 1 UNION SELECT comment FROM comments WHERE comment_id = (SELECT comment_id FROM comments WHERE post_id = 1 ORDER BY comment_id DESC LIMIT 1) ' – CodeWalker

+0

Или вы можете использовать 2 отдельных запроса вместе. 'SELECT сообщение из сообщений, где post_id = 1', чтобы получить сообщение с post_id из 1 и' SELECT comment FROM comments WHERE comment_id = (SELECT comment_id FROM comments WHERE post_id = 1 ORDER BY comment_id DESC LIMIT 1) ', чтобы получить последний комментарий на пост с post_id из 1. – CodeWalker

0

В текущем состоянии это нелегкий и оптимальный способ сделать это. Я бы предложил вам добавить поле id в вашу текущую таблицу Comments.

+0

Я думаю, что представление таблицы OP просто слишком схематично, мы не можем сказать, нет ли у него первичного ключа или нет. –

+1

В его текущем состоянии должен быть комментарий. –

0

Добавление @Sakuto ответа

Дайте идентификатор таблицы комментариев также и auto_increment его. Когда вы выберете комментарии конкретного сообщения, получите соответствующие комментарии и отобразите их, используя связанные идентификаторы комментариев. Возможно, вам нужно отобразить их более высокое число (ID), чтобы уменьшить число (ID). Введите ID в качестве основного ключа.

0

полное решение. Вы можете добавить текущая_дат столбца в таблице Комментариев с

TIMESTAMP datatype 

и установить

CURRENT_TIMESTAMP as default 

Это добавит текущую дату и время, когда есть новый комментарий. Затем добавьте запрос sql.

order by current_date desc 

Сначала он вернет последний комментарий.

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