2016-06-07 15 views
3

Ich habe Baum Tabellen - table1, table2 und . Ihre Struktur ist so etwas wie dieses:Suche in mehreren Tabellen

table1 = id | data 
      1 | x 
      2 | y 

table2 = id | table1_id | table3_id | data 
      1 | 1   | 1   | a 
      2 | 2   | 2   | b 
      3 | 1   | 3   | c 
      4 | 2   | 3   | d 

table3 = id | data 
      1 | e 
      2 | f 
      3 | g 

Und nun möchte ich von table3.data (mit LIKE) und erhalten im Zusammenhang tabelle1 Daten suchen. Wie sollte das SQL aussehen?

Zum Beispiel:

In meiner Web-Anwendung Typ i "g" - so werde ich an den table3 ID eine Rückkehr aussehen = 3, in table2 gibt es zwei Reihen mit table3_id = 3 und führen will ich bekommen Sammlung aller Zeilen mit table1.id = table2.table1_id ist so

id | table3.data 
1 | g 
2 | g 
+0

Bearbeiten Sie Ihre Frage mit Beispielen von dem, was Sie erreichen wollen. –

+0

Warum möchten Sie LIKE verwenden? – jarlh

+0

Sory für die LIKE - es ist wahrscheinlich verwirrend - die 'Daten' Spalte enthält eine Zeichenfolge und ich möchte nach allen Teilstrings suchen. – sukovanej

Antwort

2

Nun, Sie trotzig brauchen nicht LIKE zu verwenden, müssen Sie eine einfache Aufgabe JOIN tun müssen, ist LIKE für teilweise String-Vergleich verwendet ->'Full string' LIKE '%Fu%'.

Versuchen Sie folgendes:

SELECT t1.id as t1_id,t3.data as t3_data 
FROM table3 t3 
INNER JOIN table2 t2 
ON(t3.id = t2.table3_id) 
INNER JOIN table1 t1 
ON(t2.table1_id = t1.id) 
+0

Ist es möglich, das mit SELECT aus 'table1' zu tun? – sukovanej

+0

Es wählt aus table1, verstehe ich nicht die Frage .. – sagi

+0

Versuchen Sie, aktualisierte Abfrage, wenn ich Sie richtig verstanden @sukovanej – sagi