2016-08-24 2 views
0

У меня есть это недопустимое заявление MySQL:условно изменить объединение на колонке

UPDATE third_party_raw_stock_price AS r 
      IF feed_link_column = 'supplier_barcode' 
        JOIN options_new AS o 
         ON o.supplier_barcode = r.supplier_option_code 
      END IF 
      IF feed_link_column = 'supplier_code' 
        JOIN options_new AS o 
         ON o.supplier_code = r.supplier_option_code 
       END IF 
      JOIN third_party_config AS c 
       ON SUBSTRING(o.options_id, 3, 2) = c.code 
      SET o.price = 9.99, o.cost_price_variation = 3.33, o.stock = 7 
      LIMIT 2000 

Как переписать это динамически определять столбец options_new присоединиться? Мне нужно, чтобы соединение было либо ON o.supplier_code = r.supplier_option_code, либо ON o.supplier_barcode = r.supplier_option_code, в зависимости от того, для чего требуется столбец third_party_raw_stock_price.third_party_raw_stock_price.

ответ

1

Оператор A JOIN - это просто логический тест - если результат теста (каким бы простым и сложным он ни был) оценивается как true, тогда записи объединяются. Если это ложь, тогда нет соединения.

Это означает, что ваше условие соединения может быть arbitarily сложным, как вам нужно, чтобы это было, до тех пор, как она сводится к истинному/ложному значению в конце:

SELECT ... 
FROM bar 
JOIN foo ON (foo.feed = 'barcode' AND foo.supplier = bar.supplier) 
      OR 
      (foo.feed = 'code' AND foo.code = bar.code) 
Смежные вопросы