2014-01-03 3 views
0

У меня есть 3 стола: значок, продукт и меню.Соедините 3 таблицы в mysql

Product- 

id | menu_id 
---------- 
1 | 1 
2 | 1 
3 | 2 
4 | 2 
5 | 3 


Menu- 

id | image_id 
---------- 
1 | 10 
2 | 11 
3 | 12 



Icon- 

id | file_url 
---------- 
10 | www.example/.... 
11 | www.example/.... 
12 | www.example/.... 

Так что, когда я пытаюсь перечислить все меню с назначенным значком, я использую:

$sql = "SELECT m.id, m.category_id, m.menu_name, m.image_id, i.file_url 
      FROM menu m 
      INNER JOIN icon i 
      ON i.id = m.image_id 
      WHERE m.restaurant_id = '" . (int) $_SESSION['uid'] . "' 
      AND m.status='1'"; 

Но я не знаю, как я могу получить доступ к FILE_URL в моих продуктах. Поэтому я хочу перечислять каждый продукт со значком меню, где назначается продукт.

Как я могу это сделать? Спасибо за любую помощь.

+0

Просьба представить полную схему таблиц, чтобы помочь нам понять, как ваша таблица продуктов связана с остальной частью схемы. – user2989408

+0

Что значит «перечислять каждый продукт со значком меню, где назначен продукт»? Вы используете 'PHP'? – geedubb

ответ

2

Вы можете добавить еще присоединиться, то есть что-то вроде этого:

$sql = "SELECT p.id, m.menu_name, m.image_id, i.file_url 
      FROM product p 
      INNER JOIN menu m ON m.id = p.menu_id 
      INNER JOIN icon i ON i.id = m.image_id 
      WHERE ... "; 
0

Вы можете присоединиться к более чем 2 таблицы, синтаксис является точно такой же, так, что вы хотели бы это:

SELECT 
     <stuff, including i.file_url> 
    FROM 
     menu m 
     JOIN product p on m.id = p.menu_id 
     JOIN icon i on i.id = m.image_id 
0

Я думаю, вы могли бы использовать следующее, добавьте переменные, которые хотите, но соединение будет чем-то вроде этого.

SELECT * 
FROM Product AS PROD 
INNER JOIN Menu AS MNU 
ON PROD.Menu_ID = MNU.ID 
INNER JOIN ICON AS ICN 
ON MNU.Image_ID = ICN.ID 
Смежные вопросы