SQL многие многим выбирают

category_product
---------------
id_category
id_product

product
---------------
id_product
id_manufacturer

manufacturer
---------------
id_manufacturer
name

Как я создал бы SQL-запрос так, чтобы он выбрал все имена из производителя, когда id_category равен чему-то?

27
задан Ken 15 August 2010 в 08:01
поделиться

4 ответа

Это прямое внутреннее соединение таблиц:

SELECT m.name, cp.id_category
FROM manufacturer as m
INNER JOIN product as p
    ON m.id_manufacturer = p.id_manufacturer
INNER JOIN category_product as cp
    ON p.id_product = cp.id_product
WHERE cp.id_category = 'some value'
38
ответ дан 28 November 2019 в 04:56
поделиться

Запрос без объединений будет выглядеть следующим образом:

SELECT m.name 
FROM manufacturer as m, product as p, category_product as cp 
WHERE cp.id_category = <your value>
      AND cp.id_product = p.id_product 
      AND p.id_manufacturer = m.id_manufacturer 
14
ответ дан 28 November 2019 в 04:56
поделиться

Попробуйте что-нибудь вроде

SELECT  m.*
FROM      category_product cp INNER JOIN
           product p ON cp.id_product = p.id_product INNER JOIN
           manufacturer m ON p.id_manufacturer = m.id_manufacturer
WHERE      cp.id_category = <your_value>
0
ответ дан 28 November 2019 в 04:56
поделиться
Select M.name
From   manufacturer M
Where  M.id_manufacturer in ( Select P.id_manufacturer
                              From   product P
                              Where  P.id_product in ( Select C.id_product
                                                       From   category_product C
                                                       Where  C.id_category = ?))
4
ответ дан 28 November 2019 в 04:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: