ПРИСОЕДИНИТЬСЯ 3 ряда в 1 таблице к 1 строке в другой таблице - PullRequest
1 голос
/ 27 октября 2009

Мне нужно создать набор записей, который объединяет 3 строки из одной таблицы в 1 строку из другой таблицы.

В настоящее время у меня есть:

   SELECT * 
     FROM tb_product_sub_cat 
LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory 
    WHERE tb_product_sub_cat.category_name = %s 

Мне также нужно:

tb_product_sub_cat.category_id = tb_products.product_subcategory2 AND
tb_product_sub_cat.category_id = tb_products.product_subcategory3

Мне нужно найти все продукты, которые имеют «материал», в одной или во всех категориях продуктов.

Ответы [ 3 ]

3 голосов
/ 27 октября 2009
SELECT * FROM tb_product_sub_cat 
INNER JOIN tb_products 
ON tb_product_sub_cat.category_id =   tb_products.product_subcategory2 
AND tb_product_sub_cat.category_id = tb_products.product_subcategory3 
AND   tb_product_sub_cat.category_id =  tb_products.product_subcategory  
WHERE tb_product_sub_cat.category_name = %s 

Это моя интерпретация вашего сценария. Дайте мне знать, если это работает для вас или если вам нужна проработка.

EDIT

SELECT * FROM tb_product_sub_cat 
LEFT JOIN tb_products 
ON tb_product_sub_cat.category_id =   tb_products.product_subcategory2 
AND tb_product_sub_cat.category_id = tb_products.product_subcategory3 
AND   tb_product_sub_cat.category_id =  tb_products.product_subcategory  
WHERE tb_product_sub_cat.category_name = %s
2 голосов
/ 27 октября 2009

Не совсем ясно, что вы хотите услышать, но это похоже на работу для UNION: -

    SELECT * FROM tb_product_sub_cat LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory WHERE tb_product_sub_cat.category_name = %s 
UNION
SELECT * FROM tb_product_sub_cat LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory2 WHERE tb_product_sub_cat.category_name = %s
UNION
SELECT * FROM tb_product_sub_cat LEFT JOIN tb_products ON tb_product_sub_cat.category_id = tb_products.product_subcategory3 WHERE tb_product_sub_cat.category_name = %s
1 голос
/ 27 октября 2009

Псевдонимы таблиц сделают вашу жизнь проще:

   SELECT * 
     FROM tb_product_sub_cat t
LEFT JOIN tb_products tp ON t.category_id IN (tp.product_subcategory, tp.product_subcategory2, tp.product_subcategory3)
    WHERE t.category_name = %s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...