我有一个我想要做的声明的问题,并且如果可以做的话就是idk,我告诉他们: 我正在建立一个系统,就像一堵墙,所有出版物都是用户。用户可以发布内容,所有人都可以看到。 我所做的就是给出一份出版物分享并发送到我的脑海里,在我的脑海里只是我的帖子,我想要这些也是我必须“分享”的出版物。我的桌子的例子......
id_publication 发布时间 用户 日期
id_shared id_publication 用户 日期
SELECT *
FROM publication
WHERE id_publication IN
(SELECT id_publication FROM shared WHERE user = '$user')
OR user = '$user'
ORDER BY date DESC
当我提供发布共享时,插入共享我正在共享的帖子的ID,他共享的用户以及他共享的日期的表。 好吧那就在那里,在我的脑海里应该只出现我的出版物,我给了她分享。 使用此声明:
通过该声明,我列出了我的出版物,并通过发布日期(非常好)给出了她的份额,但我想要的是我为这些出版物采用共享表的日期。除了我的出版物之外,我分享的日期,而不是公众的日期。 它将获取那些id_publicacion(我共享)和其他人(可能是我的出版物)共享表的日期,以获取已发布表的发布日期。
欢迎任何回复。非常感谢你阅读。
答案 0 :(得分:1)
使用连接而不是子查询重写。
SELECT *
FROM publication p
JOIN shared s ON s.id_publication = p.id_publication
WHERE s.user='$user'
OR p.user='$user'
ORDER BY s.date DESC
这将为您提供共享和发布日期,以便与您合作。
- 编辑 -
将代码移到此处以便更具可读性。
SELECT p.id_publication
, p.Published
, p.user
, p.date
, s.id_shared
, s.id_publication
, s.user
, s.date
FROM publication p
LEFT JOIN
(SELECT *
FROM shared
WHERE user = '$user') s
ON p.id_publication = s.id_publication
WHERE p.user = '$user'
OR s.user is not null
ORDER BY ifnull(s.date, p.date) DESC