Как использовать Select query result (массив) для нового запроса и отображать результат для каждого значения?

#php #mysql

#php #mysql

Вопрос:

Я хочу получить имя элемента из одной таблицы и использовать это имя для вычисления значения, используя имя из другой таблицы.

  1. Я использую select query для извлечения результирующих строк:
 SELECT itemname FROM tablename
  
  1. Я хочу использовать результирующий массив или значение массива по одному для запуска моего следующего запроса.
     SELECT SUM(quantity) as inward FROM inward_details WHERE item_name='$itemname'
  

Есть 3 таблицы,

  1. Элемент
  2. Внутрь
  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 Я обновил свой ответ на основе изменений, которые вы внесли в свой вопрос. Пожалуйста, дайте мне знать, если это соответствует вашим потребностям.