Mysql查询 - 尝试使用注释创建twitter类型时间轴

时间:2012-04-25 18:53:54

标签: php mysql

我正在尝试使用PHP和MYSQL实现带有注释的推文类型的提要,即

Tweet1
  - Comment1 about Tweet1
  - Comment2 about Tweet1
Tweet2
  - Comment1 about Tweet2
  - Comment2 about Tweet2
  - Comment3 about Tweet2
Tweet3
  - Comment1 about Tweet3

我成功地通过每条推文下面的相关评论来圈出“推文”。不过我的问题是它正在为我的特定推文的每一条评论循环出我的“推文”,即

tweet 1
  -comment 1 about tweet1
tweet 1
  -comment 1 about tweet 1
  -comment 2 about tweet 1 (Tweet 1 has 2 comments so loops out tweet 1 two times)
tweet 2
  -comment 1 about tweet 2
tweet 2
  -comment 1 about tweet 2
  -comment 2 about tweet 2
tweet 2
  -comment 1 about tweet 2
  -comment 2 about tweet 2
  -comment 3 about tweet 2 (Tweet 2 has 3 comments so loops out tweet 2 three times)

我认为问题在于我的连接mysql查询,因为我是使用连接的新手

"SELECT tweets.accountno, tweets.id,tweets.tweet,tweets.createdat,tweets.userid,users.name,users.avatar,users.biog,comments.comment FROM tweets INNER JOIN users ON tweets.userid = users.id JOIN comments ON tweets.id = comments.tweetid WHERE tweets.accountno ='123456' ORDER by tweets.ID DESC LIMIT 20"

任何想法?非常感谢

1 个答案:

答案 0 :(得分:0)

添加GROUP BY tweets.id,您应该没问题。

以下是我编写SQL语句的方法,为简单起见,我删除了显式的JOIN语句,我使用的是隐式语句

SELECT 
    tweets.accountno, 
    tweets.id,
    tweets.tweet,
    tweets.createdat,
    tweets.userid,
    users.name,
    users.avatar,
    users.biog,
    comments.comment 
FROM 
    tweets, users, comments
WHERE
    tweets.userid = users.id
AND
    tweets.id = comments.tweetid 
AND
    tweets.accountno ='123456' 
GROUP BY
    tweets.id
ORDER BY
    tweets.id
DESC 
LIMIT
    20