具有多个表的多个内部联接

ATM*_*hew 30 mysql sql join inner-join

所以我有四张桌子.每个表都有一个前一个表id的id.所以我在点击表中有一个ID和一个ID来自它的广告.在广告表中,它具有广告ID和来自广告系列的ID.所以这是一个例子.

Table4 -
id   company      table_id
11     hp           20
12     apple        23
13     kohls        26  
14     target       21
15     borders      28

Table3 - 
id    value    table2_id
21     ks          53
22     al          54
23     tx          53 
24     fl          55
25     co          51

Table2 -
id    value    table1_id
51     ks          34
52     al          34
53     tx          33 
54     fl          35
55     co          31

Table1 -
id    value    
31     ks        
32     al          
33     tx          
34     fl          
35     co  
Run Code Online (Sandbox Code Playgroud)

因此,为了找出表4中的值来自何处,我需要回顾每个表并检查它们具有哪个ID.基本上,我想知道表1中的哪些值与表4中的值相关联.

表4作为网站访问者和表1作为互联网广告.我想知道哪些访问者来自哪些广告.不幸的是,数据已设置好,因此我只能从访问者到源代码,广告组再到广告.那有意义吗?

无论如何,我想知道是否使用4个内部连接是这个问题的最佳策略,还是有一些我不知道的更简单的mysql解决方案.

Nar*_*ian 68

内连接可能是最好的方法,你只需要3.

这将为您提供包含两列的结果集:公司和关联值.

SELECT Table4.company, table1.id, table1.value
FROM Table1
    INNER JOIN Table2
        ON Table2.table1_id = Table1.id
    INNER JOIN Table3
        ON Table3.table2_id = Table2.id
    INNER JOIN Table4
        ON Table4.table3_id = Table3.id
Run Code Online (Sandbox Code Playgroud)

  • @Narnian不应该`INNER JOIN Table1`是`INNER JOIN Table2`? (5认同)
  • 虽然,根据我看到的数据,如果没有实际匹配,我几乎会使用LEFT JOIN(除非保证完整性在另一个表中匹配). (4认同)
  • 同意。但是,如果没有匹配项,他可能不想要任何数据。 (2认同)