2017-01-02 2 views
1

у меня есть этот запрос, где я хочу найти каждый заказанный товар с его расположениемКак LEFT JOIN таблицы с дополнительным пунктом

SELECT op.orders_id, op.products_id, op.products_quantity, op.products_name, psl.shelf_code 
      FROM orders_products AS op 
    LEFT JOIN orders_products_attributes AS opa 
      ON op.orders_products_id = opa.orders_products_id 
    LEFT JOIN products_stock_location AS psl 
      ON op.products_id = psl.products_id 
      AND opa.products_options_values_id = psl.option_id 
     WHERE op.orders_id IN ('" . implode("', '", $oIDs) . "') 

вещь иногда продукты не имеют атрибутов, чтобы они не имеют записи в orders_products_attributes, в этом случае мое первое Left join возвращает ничего, что не является проблемой, но мое предложение AND делает второе соединение ничего не возвращает.

Есть ли способ сделать предложение и необязательным, если не релевантным?

ответ

0
and (opa.products_options_values_id is null 
    or opa.products_options_values_id = psl.option_id) 
+0

Конечно, это было легко, я искал какую-то вудуидную вещь, должен быть новый год;). большое спасибо. – akabaka

Смежные вопросы