所以基本上我有两张桌子
帖子(简单文章)
posts_wall (在该用户墙上发布的文章)
现在我想以某种方式组合它们,并按照它们创建/更新的日期对它们进行排序,如果帖子没有上传,则upload_id列为NULL,即使是来自posts_wall表,所以我有2个目标
还有:
我应该为timeline
添加哪一列?一个像1970年以来的2012-01-01
或13405848858
秒?
据我所知,我必须INTERSECT
他们,但
SELECT * FROM posts
INTERSECT
SELECT * FROM posts_wall
给我语法错误。
我这样做的原因是,我希望查看USER1
有权查看这些帖子的帖子,以及USER1
墙上任何用户发布的帖子。
另一个名为article_or_wall_article
的专栏要知道这是一篇文章还是某人墙上的帖子,会很棒,我想要一个优雅的方法
答案 0 :(得分:0)
你想要一个基于字段的INNER JOIN ......?从您的问题中不清楚您想加入哪个领域。
对于时间戳,在两种情况下都有pro和con - 时间戳需要转换,但允许更容易比较日期。
在MySQL中,您必须指定哪些字段来自哪个表以及如何关联它们。我并没有真正看到"帖子"之间有意义的加入。和" posts_wall"。
如果你想要两组记录,那么你需要两个表之间的UNION:
select field1, field2, field3 from posts
UNION field1, field2, field3 from posts_wall
如果您在其中一个表中没有字段,请选择合适的值和数据类型并替换缺少的字段:
...UNION field1, field2, "NOTHING!" as field3 from posts_wall
答案 1 :(得分:0)
@Row对于两个表的交集,您必须具有相同数量的列。我从下面的问题中理解的是可能对您有帮助的查询
Select *
from
(
SELECT Posted_by as UserID,title, content, PostedDate
FROM posts
INTERSECT
SELECT Sended_by as UserID,title, content,PostedWallDate as PostedDate
FROM posts_wall
)A
Order by PostedDate desc