2015-11-03 4 views
1

У меня есть 2 таблицы:Простой запрос, огромные столы

  • Продукты (53K строк)
  • Категория продукта (170K строк)

Я пытаюсь найти неклассифицированных продукты с этим запросом :

SELECT * FROM `jp_harley_products` 
WHERE product_id NOT IN 
     (SELECT p_cat_product_id 
FROM jp_harley_product_cats) 

также попытался это:

SELECT p.product_id,pc.p_cat_product_id 
FROM `jp_harley_products` p 
LEFT JOIN `jp_harley_product_cats` pc on pc.p_cat_product_id = p.product_id 

My PHPmyAdmin не может справиться с этим, так как он не показывает никаких результатов. В harley_product_cats у меня есть столбцы, как: ID продукта, Cat ID, поэтому в основном я хочу, чтобы получить эти продукты, которые не имеют никакого отношения в harley_product_cats

Может кто-нибудь помочь мне с этим?

ответ

0

Для работы необходимо указать IS NULL для LEFT JOIN.

SELECT p.product_id, pc.p_cat_product_id 
FROM `jp_harley_products` p 
LEFT JOIN `jp_harley_product_cats` pc on pc.p_cat_product_id = p.product_id 
WHERE p.product_id IS NULL 

Или попробуйте использовать WHERE NOT EXISTS

SELECT p.product_id, pc.p_cat_product_id 
FROM `jp_harley_products` p 
WHERE NOT EXISTS (SELECT 1 FROM jp_harley_product_cats pc WHERE p.product_id = pc.p_cat_product_id);