Wiele połączeń wewnętrznych z wieloma tabelami

Więc mam cztery stoliki. Każda tabela ma pojedynczy identyfikator dla poprzedniego id tabeli. Tak więc moja tabela in click ma id i id dla reklamy, z której pochodzi. W tabeli reklam ma identyfikator dla reklamy i jeden dla kampanii, z której pochodzi. Oto przykład.

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  

Więc aby dowiedzieć się, skąd pochodzą wartości w tabeli 4, muszę wrócić do każdej tabeli i sprawdzić, który identyfikator mają. Zasadniczo chcę wiedzieć, które wartości w tabeli 1 są powiązane z wartościami w Tabela 4.

To z tabeli 4 jako odwiedzających stronę internetową i Tabeli 1 jako reklamy internetowe. Chcę wiedzieć, którzy goście pochodzą z jakich reklam. Niestety dane są skonfigurowane tak, że mogę wykonać tylko pojedyncze kroki wstecz od odwiedzającego do źródła do grupy reklam do reklamy. Czy to ma sens?

W każdym razie, zastanawiam się, czy użycie 4 innner joins było optymalną strategią dla tego problemu, czy jest jakieś prostsze rozwiązanie mysql, którego nie jestem świadomy.

Author: ATMathew, 2011-08-22

1 answers

Połączenia wewnętrzne są prawdopodobnie najlepszą metodą, a potrzebujesz tylko 3.

To da ci zestaw wyników z dwoma kolumnami: Firma i powiązane wartości.

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
 77
Author: Narnian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 15:03:20