2012-04-21 14 views
12

Używam tego zapytania:Mysql zapytanie do przyłączenia się trzy tabele

SELECT a.sales_id, d.bus_title, a.cat_id 
FROM tbl_sales a 
INNER JOIN tb_category b ON a.cat_id = b.cat_id 
INNER JOIN tbl_business d ON d.bus_id = a.bus_id 

która produkuje ten wynik:

sales_id | bus_title  |cat_id 
----------|----------------|------------ 
1  | Business 1  | 6 
2  | Business 12 | 12 
3  | Business 123 | 25 

Zmieniłem cat_id pole do nowej tabeli o nazwie tb_sales_category który zawiera pola sales_category_id , sales_id, cat_id. Jak mogę napisać nowe zapytanie, dołączając do tej tabeli, aby uzyskać ten sam wynik, co powyżej?

Jestem trochę nowy w bazach danych, potrzebuję pomocy. Dzięki z góry

Odpowiedz

12

Spróbuj tego:

SELECT a.sales_id, d.bus_title, s.cat_id 
FROM tbl_sales a 
INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id 
INNER JOIN tbl_business  d ON a.bus_id = d.bus_id 
INNER JOIN tb_category  b ON s.cat_id = b.cat_id 

Pomysł jest dość prosty, pierwsze pole w nowej tabeli tb_sales_category który jest sales_category_id pracuje jako zastępczego klucza, to nie ma nic wspólnego z relacje między dwoma innymi tabelami. Następnie przechodzimy do pozostałych dwóch pól, które są sales_id, cat_id, to, co powinieneś odwzorować na dwie pozostałe strony relacji.

Można nie Join tb_category b ON a.cat_id = b.cat_id na nowym schemacie poniewaz nie mamy już a.cat_id, i tu pojawia się nowy stół tb_sales_category rolę, wkładając go z dwóch stron wiążących, jeden z INNER JOIN tb_category b ON s.cat_id = b.cat_id a drugi z INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id powinniśmy zrobić.

Mam nadzieję, że to ma sens.

+1

To też działa dobrze, dzięki –

+1

również dzięki za wyjaśnienie, to pomoże mi w moim własnym procesie uczenia –

3

nie jestem wielkim fanem sprzężenia wewnętrzne więc spróbuj tego:

SELECT a.sales_id, a.cat_id, c.bus_title 
FROM tb_sales_category a, tb_sales b, tbl_business c 
WHERE a.sales_id = b.sales_id 
AND b.bus_id = c.bus_id 
+2

Dlaczego na ziemi don lubisz INNER JOINs? – liquorvicar

+0

@ gimg1 Dzięki, że służy to celowi –

Powiązane problemy