2013-02-12 2 views
0
products (products_id, name, type) 
orderform (orderform_id, product_id, country_id, price) 

Я хочу получить все продукты, которых нет в таблице orderform для определенного country_id.SQL слева с дополнительным, где статья

Неверное и я понимаю, что есть более быстрые способы, скорость - это не проблема, а только получение правильного набора результатов.

SELECT * FROM products p 
    left JOIN orderform o ON o.product_id = p.product_id 

WHERe o.product_id is NULL AND o.jur_id = 10 

Спасибо, ребята и девчата

ответ

0
SELECT * 
FROM products p 
WHERE product_id NOT IN(SELECT product_id 
         FROM orderform 
         WHERE jur_id = 10); 

Также попробуйте переместить дополнительное условие к условию соединения:

SELECT * 
FROM products p 
left JOIN orderform o ON o.product_id = p.product_id 
         AND o.jur_id = 10       
WHERe o.product_id is NULL; 
+0

yep просто нужно добавить его в состояние соединения, я получил его на месте. спасибо – Tristanisginger

0

это один будет просто

SELECT * 
FROM products p 
WHERE products_id NOT IN (SELECT DISTINCT product_id 
          FROM orderform 
          WHERE country_id = 10) 

я cant см. jur_id в вашей схеме, если вы хотите, вы можете применить этот фильтр тоже

+0

oops jur_id is country_id – Tristanisginger

0

Это будет выглядеть так! (но не самый лучший подход)

SELECT * FROM products p 
left JOIN (select * from orderform WHERe product_id is NULL AND jur_id = 10) o ON o.product_id = p.product_id 
Смежные вопросы