【问题标题】:Query to get data from 3 different table for different keys查询以从 3 个不同表中获取不同键的数据
【发布时间】:2019-01-07 15:54:34
【问题描述】:

我有三个不同的表,想从中获取数据。 如果有人对此有一些解决方案,请帮助我。

用户表

userName | email(p.k) | accountType(p.k)

 Vivek    | v@asd.asd | google

Rahul    | r@asd.asd | facebook

事件表

eventId(p.k) | email(f.k) | accountType(f.k) | eventName

1    | v@asd.asd | google | birthday

贡献者

eventId(f.k) | email(f.k) | accountType(f.k) | contribute

1    | r@asd.asd | facebook | $20

我想要这样的数据

Rahul contribute $20 for vivek birthday

如何在单个查询中获取 rahul 和 vivek 任何人都可以帮助我

【问题讨论】:

  • 在 fk 上使用 join 并将 user 表与贡献者连接一次,与 Event 表连接一次。你必须两次使用表
  • 您已接受答案,非常感谢。无需编辑您的问题以包含该解决方案。事实上,请不要这样做,这只会使事情变得混乱。

标签: mysql sql oracle sqlite


【解决方案1】:

这个查询应该很简单,我们只需要加入用户表两次。

SELECT * 
FROM user
JOIN contribute ON user.email = contribute.email
JOIN event ON event.id = contribute._eventId
JOIN user u2 ON event.email = u2.email;

【讨论】:

  • 为了获得两次用户名,我们需要使用 as 要么我们只获得一个用户名
  • 你是对的;您将需要在列具有相同名称的情况下使用别名。
  • 如果我想在同一个查询中计算一个事件的贡献数。我们怎样才能做到这一点
  • SELECT COUNT(*) as eventCount, u2.userName as u2Name, .... 然后将GROUP BY event._eventId 附加到查询的末尾。
  • 如果我使用 group by 我看不到同一事件的多个记录
猜你喜欢
  • 2019-05-27
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 2021-06-06
  • 2013-12-26
相关资源
最近更新 更多