【问题标题】:Join 3 Distinct Tables in MySQL with no Common or Linked Column在没有公共或链接列的 MySQL 中加入 3 个不同的表
【发布时间】:2015-07-15 20:18:34
【问题描述】:

我在 Mysql 中有三个不同的表,它们没有共同的列,我想从每个表中访问一列并将它们全部显示在别处。

表格详情

  1. Table_1 = 屏幕,列名:S_Id
  2. Table_2 = 电影,列名:M_Code
  3. Table_3 = showdetails,列名:Show_Id

每个表中有更多列,但我已经提到了我想要访问的内容。我尝试了以下代码,但这仅返回列名作为输出,并且在输出中没有收到列数据。我是数据库的初学者所以请帮我解决这个问题。

SELECT * FROM screen
JOIN movie ON movie.M_Code = screen.S_Id
JOIN showdetails ON showdetails.Show_Id = screen.S_Id;

【问题讨论】:

  • 我的问题是,通过组合这些表格,您将获得什么?你会收集哪些有用的数据?
  • 表格彼此不相关,您需要所有组合,例如3 个屏幕、50 部电影、100 个放映细节 = 150000 条记录?
  • 使用示例数据和所需结果编辑您的问题。我敢打赌,列中有列,只是名称不同(数据库设计不佳的标志)。
  • @cs04iz1 我正在尝试制作可供客户稍后预订的“电影节目”,我试图通过链接屏幕表的屏幕 ID、电影表的电影代码和节目的节目 ID 来做到这一点详细信息表(我可能错了,但这就是我想象的工作方式)
  • @Gaurav Kumar:我的问题呢?你也能回答这个问题吗?

标签: mysql


【解决方案1】:

您可以创建 3 个单独的选择语句并将它们链接到硬编码的人工键上

select a, b, c, d, e, f from (

  (select a, b, c, 1 as key from atable) aa
  inner join 
  (select d, e, f, 1 as key from btabke) bb
  on aa.key = bb.key

类似的东西

基本上,每个 select 语句都变成了自己的表,只选择那些您希望链接到其他基于 select 的表的行。人工密钥是将它们链接在一起的简单方法,因为您没有其他方法可以这样做

【讨论】:

    【解决方案2】:

    我不确定我是否理解您想要实现的目标。这些表是否以某种方式相互关联,例如。 G。每部电影都有放映它的屏幕吗?如果是这样,您必须像这样加入:

    SELECT * FROM screen JOIN movie ON movie.S_Id = screen.S_Id
    

    想象一下您的表格如下所示:

    屏幕

    S_Id|姓名 ------------ 1 |主屏幕 2 |屏幕 2 3 |小屏幕

    表格

    M_代码|姓名 ------------- 1 |海底总动员 2 |太空奥德赛 3 |指环王

    您的 join 语句将按原样连接 ID,在本例中,将 Find Nemo 连接到主屏幕,将 Odyssey in Space 连接到屏幕 2,将 LOTR 连接到小屏幕。这可能不是您想要实现的,因此您必须使用或添加一列将这些数据行相互链接。

    如果您想获得所有可能的组合,您可以使用康斯坦丁的答案,但我认为如果您有很多数据集,这可能会变得非常慢。相反,您可以检索每个表的所有数据集,并仅组合那些在您的程序中有意义的数据。

    【讨论】:

      猜你喜欢
      • 2013-05-26
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多