Я намагаюся оновити ціну продуктів у одній таблиці (ps_product) з іншої таблиці (tmp_bmb) на основі їх постачальника_посилання.
У MySQL виконується наступний запит:
SELECT * FROM ps_product, tmp_bmb WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference
і повертає 1700 рядків.
Але відповідний (на мій погляд) запит UPDATE не:
UPDATE ps_product, tmp_bmb SET ps_product.price = tmp_bmb.price WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference
повертає 0 вплив рядків.
Мої таблиці схожі на ці:
ps_product: supplier_reference | ціна
У ps_product.supplier_reference записи не є унікальними, і є також нулі. Тому він не може бути первинним ключем.
tmp_bmb: supplier_reference | ціна (це нова ціна)
Посилання постачальника в tmp_bmb є первинним ключем
Велике спасибі за вашу допомогу!
Відповіді:
1 для відповіді № 1Схоже, ви отримуєте 0 рядків, оскільки це не змінює жодних даних - тобто, ps_product.price вже така ж, як tmp_bmb.price.
Щоб це підтвердити, спробуйте це для вашого початкового запиту:
SELECT * FROM ps_product, tmp_bmb WHERE tmp_bmb.supplier_reference = ps_product.supplier_reference and ps_product.price!=tmp_bmb.price;
і ви повинні отримати 0 рядків.