2015-01-25 5 views
0

У меня есть SQL таблицы, как это и я хочу показать деятельность пользователя на странице пользователя, и я не знаю, как написать запрос об этом, чтобы моя таблица выглядит следующим образом:MySQL Как получить активность пользователя?

users 
id 
name 

posts 
id 
title 
description 

posts_likes 
id 
post_id 
user_id 
time 

posts_comments 
id 
post_id 
user_id 
time 

теперь я хочу показать пользователь, тир деятельности в своей странице, как: вы комментировали на этом посту ИЛИ понравившихся и комментировал этот пост порядка по времени, поэтому я пишу некоторый запрос, как это, но есть много проблем. ..

SELECT posts.id , posts.title , posts_comments.comment , posts_likes.time , posts_comments.time 
FROM posts 
JOIN posts_likes ON posts.id=posts_likes.post_id 
JOIN posts_comments ON posts.id=posts_comments.post_id 
WHERE posts_likes.user_id = 6 AND posts_comments.user_id =6 
ORDER BY posts_likes.time, posts_comments.time DESC 

поэтому, когда я использую этот запрос он приносит мне сообщения, что пользователь с идентификатором = 6 прокомментирован и любил и никогда не показывать мне сообщения, которые пользователя только прокомментировал или пользователя понравился только, так что если какой-либо орган знать, как я могу решить эту проблему, я действительно ценю Большое спасибо, ребята ... SRY за мой английский

+0

добавить для него таблицу «журналов». любой другой вариант будет медленнее. –

+0

, так что я имею в виду, что я должен сделать другую таблицу, и когда пользователь прокомментировал или понравился какой-либо пост, заполните базу данных? –

+0

Вы можете попытаться изменить AND в своем предложении where на OR. Вы также можете объединить таблицу posts_likes и posts_comments и добавить булевский столбец, когда это правда, это комментарий, когда он неверен, это похоже. – user2974830

ответ

0

попробовать это одно:

SELECT posts.id , posts.title , posts_comments.comment , posts_likes.time , posts_comments.time 
FROM posts 
LEFT JOIN posts_likes ON posts.id=posts_likes.post_id AND posts_likes.user_id = 6 
LEFT JOIN posts_comments ON posts.id=posts_comments.post_id AND posts_comments.user_id = 6 
WHERE 1 
ORDER BY posts_likes.time DESC, posts_comments.time DESC 

Untested

+0

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

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