#php #mysql
#php #mysql
Вопрос:
Я хочу получить имя элемента из одной таблицы и использовать это имя для вычисления значения, используя имя из другой таблицы.
- Я использую select query для извлечения результирующих строк:
SELECT itemname FROM tablename
- Я хочу использовать результирующий массив или значение массива по одному для запуска моего следующего запроса.
SELECT SUM(quantity) as inward FROM inward_details WHERE item_name='$itemname'
Есть 3 таблицы,
- Элемент
- Внутрь
- outward
Что я хочу сделать, это получить список элементов из таблицы элементов с помощью select query, затем получить количество для элемента из inward и количество из outward, затем вычесть внутреннее количество из outward quantity и повторить результат.
Например, имя элемента — pen, а количество входящих — 20, а количество внешних — 5, тогда я хочу отобразить результат как pen 15 (20-5)
Но я хочу это для всех элементов из таблицы элементов.
Ответ №1:
Вы могли бы использовать скрытый ввод в HTML со значениями строк внутри внутри цикла while
или for
, это означает, что входные данные не будут отображаться в браузере. С помощью внутреннего кода (PHP) вы можете легко выполнить математические вычисления и перейти к вставке. Надеюсь, это поможет 🙂
Ответ №2:
Вы можете получить нужные результаты только с помощью одного запроса, используя LEFT JOIN
:
SELECT t.itemname,
COALESCE(SUM(i.quantity), 0) AS inward,
COALESCE(SUM(o.quantity), 0) AS outward,
COALESCE(SUM(i.quantity), 0) - COALESCE(SUM(o.quantity), 0) AS movement
FROM tablename t
LEFT JOIN inward_details i ON i.item_name = t.itemname
LEFT JOIN outward_details o ON o.item_name = t.itemname
GROUP BY t.itemname
Мы используем a, LEFT JOIN
так что, если с элементом не связано ни одной inward_details
строки, мы все равно получаем строку, и мы COALESCE
SUM
так, чтобы NULL
результат для этой ситуации приводил к значению 0.
Комментарии:
1. @DigvvijayZiite Я обновил свой ответ на основе изменений, которые вы внесли в свой вопрос. Пожалуйста, дайте мне знать, если это соответствует вашим потребностям.