【问题标题】:Did my union work?我的工会工作了吗?
【发布时间】:2013-04-18 14:24:19
【问题描述】:

我们现在正在制作学校版的 Facebook 又名 Tigerbook。我们创建了以下三个数据表。

用户:

user    name
1       Hallie  
2       Dylan
3       Sarina
4       Dominic

朋友:

user    friend
1       2
1       3
1       4
2       1
3       1
4       1
2       4
4       2
3       2
2       3

帖子:

user    postid  post
1       101     This is TigerBook!
2       102     I am pregnant.
1       103     I like peeps
4       104     Giant Buzz Lightyears rock.
3       105     Die Tucker die
1       106     Murhur de derpity derp
2       107     banana spaghetti squid
4       108     chicken

我们只是使用了以下语法:

select user from users union select user from friends union select user from posts;

它想出了这个:

user
1
2
1
4

我们只是想知道加入是否有效,或者我们是否应该尝试其他方法。我们已经尝试过左连接和完全连接,但没有一个效果很好。

附带说明:当我们将 php 代码连接到网页时,它会在创建登录时自动生成用户,还是我们必须在用户登录之前创建用户?

【问题讨论】:

  • 恐惧,马克 Z,他们来了! “如果加入有效”是什么意思?你想达到什么目标?
  • 您想通过该声明达到什么目的?你在使用外键吗?

标签: mysql join union


【解决方案1】:

这显然不是JOIN...它是UNION,它在所有三个表中删除了user 的重复项。所以要回答您的问题,您的UNION 有效。如果你想JOIN 用户发帖,你需要类似

SELECT a.user, a.name, b.postid, b.post
FROM users a
JOIN posts b ON b.user = a.user

这会产生

|用户 |姓名 |邮政编码 |发布 | -------------------------------------------------- -------- | 1 |哈莉 | 101 |这是虎书! | | 2 |迪伦 | 102 |我怀孕了。 | | 1 |哈莉 | 103 |我喜欢偷看| | 4 |多米尼克 | 104 |巨大的巴斯光年岩石。 | | 3 |萨丽娜 | 105 |模具塔克模具 | | 1 |哈莉 | 106 | Murhur de derpity derp | | 2 |迪伦 | 107 |香蕉意大利面鱿鱼| 高分辨率照片| CLIPARTO | 4 |多米尼克 | 108 |鸡 |

See a demo

【讨论】:

  • 我们知道这不是一个连接,我们只是说我们之前尝试过一个,但最终没有成功。至于你刚刚给我的代码,那行得通。但是我们如何将它与朋友一起加入,以便将其发布给这些朋友?
  • @JohnAdams 现在帖子和发给的朋友之间没有关系。您需要有消息的发件人/收件人。
  • 不是发给朋友的,而是发到某个人的网页上。我们希望显示您所有朋友的所有帖子,而不是整个网站帖子上的每个人。关于如何做到这一点的任何建议?
  • @JohnAdams 这真的超出了这个问题的范围。我建议您创建一个新问题。确保包含示例数据(就像您在此处所做的那样)和所需的结果集,当然还有您尝试过的内容。
猜你喜欢
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多