【发布时间】:2014-05-27 09:51:49
【问题描述】:
大家好,我目前有一个运行良好的 MySQL 查询,但我唯一不喜欢的是,当我收到返回的数据时,除了行的最后一列之外,有些行会重复。
我猜是因为当我选择包括左连接在内的所有内容时,commenttext 列包含用户提交的帖子的数据。
例如)如果我发布了一个 id 为 1 的帖子,并且有 5 个人对该帖子发表评论,MySQL 查询将显示 5 行,每列中的所有数据都相同,除了最后一列包含与邮政。
到目前为止,这是我的 MySQL 查询。我怎样才能使它不带回重复的数据,而只带回与帖子的 id 分组的 cmets,或者如何将所有 cmets 存储到一个数组中,这样当我运行 foreach 循环时,我就可以运行 cmets 数组里面有一个while循环。我使用 foreach 循环的原因是使用 html 导出数据。
SELECT
b.id
, b.from_user
, b.dateadded
, b.posttype
, b.posttext
, b.photoname
, b.blahchoice
, b.commentschoice
, b.mood
, c.defaultphoto
, d.firstn
, d.lastn
, e.status
, f.topostid
, f.commenttext
FROM
t_board b
INNER JOIN
t_userprofiles c ON b.from_user = c.user_id
INNER JOIN
t_users d ON b.from_user = d.id
INNER JOIN
t_friendship e ON e.friend_ids = b.from_user
LEFT JOIN
t_postcomments f ON f.topostid = b.id
WHERE
e.status = 'Friend'
AND e.user_ids = :id
ORDER BY
b.id DESC
【问题讨论】:
-
您能否更好地格式化查询?另外,您可能想创建一个SQL fiddle 供我们使用
-
你为什么不直接运行多个查询然后在 php 中执行呢?
-
我做到了,但我想让 ajax 更容易一次获取 @Aliendroid
-
我不影响你的ajax,没有人说你只能在一次调用中运行一个查询。 @this.Tony