Match unrelated tables (MySQL)
Naar navigatie springen
Naar zoeken springen
Occasionally, I want to match unrelated tables. That sounds like ordering a steak in a vegetarian restaurant, but there is a real use case behind it: Assigning EAN numbers to products:
- Table
ean
contains 1,000,000 reserved EAN numbers (some of which may be used already) - Table
product
contains a bunch of rows without value for theean
column
How to assign EAN numbers to these products and conversely, update the EAN table with the SKUs of these products?
General approach - Use serial numbers
This is the solution that I've been using since 2016. It seems a bit cumbersome, but it works, and it is quite safe (the table with EANs is one of the few tables that I really don't want to mess up, plus that it is really big):
- Create temporary tables
ean_tmp
andproduct_tmp
that only contain the records that need to be matched - Add an autonumber primary key to both tables
- Match the tables using these pks and update both
- Update the two original tables from these temporary tables.
Library
- It seems to be too complicated to create a sproc that can handle the general case (like any kind of table where EAN codes are needed): It's much easier, faster and less critical to just copy-paste-adjust the last sproc - See History below
- Everything is handled by a single sproc. No need for additional scripts or whatever.
History
- Pre 2020.01: This sproc (whatever it was called - Maybe just
ean_assign_codes
) was part of "bal_dwh_op" & "bal_dwh_process" - 2020.01: Refactored, as part of "bal_dwh_op"
- 2021.02: Updated these comments (@ bal_dwh_op)
- 2022.12: Moved sproc
ean_assign_codes
tobal_dwh_org
, removed it from other locations - 2022.12.12: Copy-paste-adjusted
ean_assign_codes
toean_assign_oem_bal
(228 lines of code) - 2022.12.12: Copy-paste-adjusted
ean_assign_codes
toean_assign_product_new_various_202212
(224 lines of code)