Как я могу получить все товары из данной категории (включая подкатегории) - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть две таблицы в sql:

SQL Cat

Как я могу получить все продукты из данной категории вкл.Подкатегории?

например (Категория 1):

SELECT * FROM Product WHERE Category = 1 or Category is Subcategory from 1;

Что я хочу получить:

Product_ID - NAME
1  - 512GB HDD
2  - 128 SSD ABC
4  - 1TB 3.5 HDD

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вам нужно полное отображение из подкатегорий для всех их родителей.Во многих диалектах SQL вы можете использовать для этого рекурсивный CTE.

Вот один из методов:

with cte as (
      select c.cat_id as parent_id, c.cat_id
      from categories c
      union all
      select cte.parent_id, c.cat_id
      from cte join
           categories c 
           on cte.parentid = c.subcategory_from
     )
select p.*
from products p
where p.category in (select cte.cat_id
                     from cte
                     where cte.parent_id = 1
                    );
0 голосов
/ 13 декабря 2018

Вы можете использовать подзапрос, подобный приведенному ниже

SELECT Product_ID, Name 
  FROM Product 
 WHERE Category = 1 
    OR Category IN ( SELECT Cat_ID
                       FROM Categories 
                      WHERE Subcategory_from is not null ) 
 ORDER BY Product_ID;
...