Мне нужно собирать количества из нескольких складов, периодически обновляющих их запасы. Файлы автоматически загружаются в таблицы в моей базе данных MySQL, но иногда на одном складе могут быть несколько более или менее файлов, чем другие. Мне нужно добавить их все, чтобы определить общее количество, доступное для всей сети.Как объединить несколько таблиц 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 ПРИСОЕДИНИТЕСЬ, потому что иногда на одном складе могут отсутствовать записи, а иногда и другие. Если в файле одной ветви отсутствует sku, я предпочел бы, чтобы все остальные ветви были добавлены вместе, и просто получите NULL, который будет преобразован в 0 с помощью функций в SELECT. Когда я тестировал различные решения для соединения, я также, кажется, получаю декартовы числа строк, что меня смущает. Любые рекомендации приветствуются.
Немного разъяснений: Нам нужно присоединиться к 17 таблицам. Нас не интересует сумма столбца, а больше индивидуальных значений. Например, таблица может представлять список элементов a, b, c, d и список из 1,2,3,4. У нас будет эта таблица с нескольких разных складов, и нам нужно будет найти общую сумму для всей сети. Если бы четыре склада имели эти значения, мы хотели бы видеть a, b, c, d с 4,8,12,16 в качестве значений для всего доступного.
Я понимаю, почему LEFT JOIN и RIGHT JOIN не сработают для вас - но вы пробовали ПОЛНУЮ ВНУТРЕННУЮ СОЕДИНЕННОСТЬ? – PaF
Я думаю, что FULL OUTER JOIN будет хорошим решением, но из того, что я понимаю, MySQL этого не поддерживает, и он будет реализован путем выполнения LEFT JOIN слева и RIGHT JOIN справа. – user3326985
Спасибо за разъяснение - к сожалению, все еще очень неясно. Я думаю, что конкретный пример (таблица t1 имеет столбцы c1, c2 и значения (v1a, v2a), (v1b, v2b), таблица t2 имеет столбцы ... и т. Д.). Во всяком случае, если правильное решение - ПОЛНАЯ ВНЕШНЯЯ ВСТУПЛЕНИЕ, а в MySQL вы не можете этого сделать, а затем имитировать его (как вы упомянули сами). – PaF