web-dev-qa-db-ja.com

複数のテーブルとの複数の内部結合

したがって、4つのテーブルがあります。各テーブルには、前のテーブルIDに対して1つの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  

そのため、表4の値がどこから来たのかを知るには、各テーブルを調べて、どのIDを持っているかを確認する必要があります。基本的に、表1のどの値が表4の値に関連付けられているかを知りたい。

ウェブサイトへの訪問者としての表4とインターネット広告としての表1のこれ。どの訪問者がどの広告から来たのか知りたい。残念ながら、データは設定されているため、訪問者からソース、広告グループ、広告まで1ステップしか戻れません。それは理にかなっていますか?

とにかく、4つの内部結合を使用することがこの問題の最適な戦略であるか、または私が知らないより簡単なmysqlソリューションがありますか?.

30
ATMathew

内部結合がおそらく最良の方法であり、必要なのは3だけです。

これにより、会社と関連する値の2つの列を持つ結果セットが得られます。

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
66
Narnian