2012-04-21 2 views
12

Я использую этот запрос:запроса Mysql присоединиться три таблицы

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 

, который производит этот результат:

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

Я изменил поле cat_id в новую таблицу с именем tb_sales_category, который содержит поле sales_category_id , sales_id, cat_id. Как я могу написать новый запрос, присоединив эту таблицу, чтобы получить тот же результат, что и выше?

Я вроде как новый для баз данных, нужна помощь. Заранее спасибо

ответ

12

Попробуйте это:

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 

Идея довольно проста, первое поле в новой таблице tb_sales_category которая sales_category_id работает как суррогатный ключ, это не имеет ничего общего с отношения между двумя другими таблицами. Затем мы переходим к двум другим полям, которые являются sales_id, cat_id. Это то, что вы должны сопоставить с двумя другими сторонами отношений.

Вы не можете Join tb_category b ON a.cat_id = b.cat_id на новой схеме becouse мы больше не a.cat_id, и тут приходит новая роль таблицы tb_sales_category, вставив его с двумя связывающими сторонами, одна с INNER JOIN tb_category b ON s.cat_id = b.cat_id и другой с INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id мы должны сделать.

Надеюсь, что это имеет смысл.

+1

Это тоже работает отлично, спасибо –

+1

также спасибо за объяснение, это поможет мне в себе процесс обучения –

3

Я не большой поклонник внутренних соединений, так попробуйте это:

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

Почему на земле дон Вам нравятся INNER JOINs? – liquorvicar

+0

@ gimg1 Спасибо, что служит цели –

Смежные вопросы