在没有公共或链接列的MySQL中加入3个不同的表

我在Mysql中有三个不同的表格,它们没有共同的列,我想从每个表格访问一列,并将其中的所有表格合并在一起。

表详细信息

  • Table_1 =屏幕,列名称:S_Id
  • 表2 =电影,列名称:M_Code
  • 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个单独的选择语句并将它们链接到硬编码的人工键上

    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基表的表。 人造钥匙是将它们连接在一起的一种简单方法,因为您没有其他方法可以这样做


    我不完全确定我明白你想达到什么。 这些桌子是否彼此相关,例如,每部电影都有一个显示屏幕? 如果是这样,你必须像这样加入:

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

    想象你的桌子如下所示:

    屏幕

    S_Id| name
    -----------
    1   | Main Screen
    2   | Screen 2
    3   | Little Screen
    

    M_Code| Name
    -------------
    1     | Find Nemo
    2     | Odyssey in Space
    3     | Lord of the Rings
    

    您的加入声明会将ID保持原样,在这种情况下,请在主屏幕中查找尼莫,在屏幕2中查找空间中的奥德赛,并在小屏幕中查找LOTR。 这可能不是你想要实现的,所以你必须使用或添加一个将这些数据行相互链接的列。

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

    链接地址: http://www.djcxy.com/p/72721.html

    上一篇: Join 3 Distinct Tables in MySQL with no Common or Linked Column

    下一篇: How can I SELECT rows with MAX(Column value), DISTINCT by another column in SQL?