Мне нужно собрать количества с нескольких складов, которые периодически обновляют свои запасы. Файлы автоматически загружаются в таблицы моей базы данных MySQL, но иногда в одном хранилище файлов может быть на несколько больше или меньше, чем в других. Мне нужно добавить их все, чтобы определить общее количество, доступное для всей сети.
Моя идея состояла в том, чтобы сделать:
SELECT
IFNULL(branch_01.qty,0) +
IFNULL(branch_02.qty,0) +
IFNULL(branch_03.qty,0) +
и т.д. через все склады, присоединенные как:
FROM branch_01
JOIN branch_02
USING (oespaced)
JOIN branch_03
USING (oespaced)
и т.д. по всем складам
Я не могу использовать LEFT JOIN или RIGHT JOIN, потому что иногда на одном складе могут отсутствовать записи, а иногда на другом. Если sku отсутствует в файле одной ветки, я бы предпочел, чтобы другие ветки были добавлены вместе и просто получили NULL, который был бы преобразован в 0 функциями в SELECT. Когда я тестировал различные решения для соединения, я также, кажется, получаю декартово число строк, что еще больше меня смущает. Любое руководство приветствуется.
Небольшое уточнение: нам нужно объединить 17 таблиц. На самом деле нас интересует не сумма столбца, а отдельные значения. Например, таблица может представлять список элементов a, b, c, d и перечислять количества 1, 2, 3, 4. У нас была бы эта таблица из нескольких разных складов, и нам нужно было бы найти общую сумму для всей сети. Если бы четыре склада имели эти значения, мы бы хотели видеть a,b,c,d с 4,8,12,16 в качестве значений для общего количества доступных.