Объедините больше таблиц в одном результате - PullRequest
1 голос
/ 02 марта 2012

Мне нужна помощь с выбором SQL из нескольких таблиц.

Таблица:

s_products
- id
- name
- url
- brand_id

s_products_categories
- product_id
- category_id

s_brands
- id
- name
- url

s_categories
- id
- name
- url

Сравнить:

s_products.id =  s_products_categories.product_id
s_categories.id = s_products_categories.category_id
s_products.brand_id = s_brands.id

И необходим результат:

1) $products['s_categories.url']['s_brands.url']['s_products.url'] = 's_products.name';

2) $brands['s_categories.url']['s_brands.url'] = 's_brands.name';

Можете ли вы помочь мне сделать это в один выбор (или более)?

Ответы [ 3 ]

1 голос
/ 02 марта 2012
SELECT s_categories.url as url1, s_products.url as url2, s_products.name as name 
FROM s_products 
INNER JOIN s_products_categories on s_products.id   = s_products_categories.product_id 
INNER JOIN s_categories          on s_categories.id = s_products_categories.category_id
1 голос
/ 02 марта 2012

Попробуйте:

select c.url  category_url,
       c.name category_name,
       b.url  brand_url,
       b.name brand_name,
       p.url  product_url,
       p.name product_name
from s_products p
join s_brands b on p.brand_id = b.id
join s_products_categories pc on p.id = pc.product_id
join s_categories c on pc.category_id = c.id

Чтобы увидеть комбинации определенных полей (например, category_url с brand_url), добавьте distinct сразу после select и удалите ненужные поля.

1 голос
/ 02 марта 2012
select *yourcolumnsname*
from s_products INNER JOIN  s_products_categories
on s_products.id =  s_products_categories.product_id
INNER JOIN s_categories.id 
on s_categories.id = s_products_categories.category_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...