Как объединить два SQL-запроса в один и отобразить в цикле foreach PHP ⇐ Php
Как объединить два SQL-запроса в один и отобразить в цикле foreach PHP
Я пытаюсь отобразить двух конкретных людей (доход пары) в таблице (с помощью цикла foreach PHP). Каждый человек должен быть показан в столбце, а доход — в каждой строке.
Чтобы соединить пару/людей, я создал таблицу «j_b_controller», которая может объединять пары с помощью «joint_budget_id». В j_b_controller также есть столбец «position_order», позволяющий контролировать, где разместить person1 и person2. У Person1 позиции_order = 1 и person2 = 2.
Когда одна из учетных записей входит в систему, я начинаю этот сеанс $_SESSION['budget_id'] = $jointbudget['joint_budget_id'];
Пример: Таблица доходов выглядит следующим образом
У человека1 есть доход 1, доход 2, доход 3 и доход 5. человек2 имеет доход1 Сумма дохода1 у каждого человека неодинакова. Каждый доход имеет свою собственную спецификацию «row_type_id», поэтому у дохода1 есть row_type_id 1.
Таблица доходов
Таблица j_b_controller выглядит следующим образом
У пользователя 1 значения Joint_budget_id = 1 и Position_order = 1. У Person2 значения Joint_budget_id = 1 и Position_order = 2
Таблица j_b_controller
Все должно отображаться в таблице HTML (цикл PHP foreach)
ORDER BY row_type_id
Человек 1 Человек 2 Доход1 Доход1 Доход2 Пусто Доход3 Пусто Доход5 Пусто
Надеюсь, вы видите картинку ниже HTML-таблица
Два SQL-запроса, которые следует соединить/объединить:
//Выбираем доходы от человека с Position_order = 1 $stmt = $pdo->prepare('ВЫБЕРИТЕ i.id, i.name, i.amount AS p2_amount, i.row_type_id ИЗ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb НА i.account_id = jb.account_id И jb.joint_budget_id = ? И jb .position_order = **1** ORDER BY i.id И i.row_type_id ASC'); $stmt->execute([$_SESSION['budget_id']]); $income_rows_122s = $stmt->fetchAll(PDO::FETCH_ASSOC); и
//Выбираем доходы от человека с Position_order = 2 $stmt = $pdo->prepare('ВЫБЕРИТЕ i.id, i.name, i.amount AS p2_amount, i.row_type_id ИЗ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb НА i.account_id = jb.account_id И jb.joint_budget_id = ? И jb .position_order = **2** ORDER BY i.id И i.row_type_id ASC'); $stmt->execute([$_SESSION['budget_id']]); $income_rows_122s = $stmt->fetchAll(PDO::FETCH_ASSOC); Я уже пытался использовать UNION и пытался сделать подзапрос
Мой подзапрос на данный момент является закрытым, но с помощью подзапроса я могу вернуть только 1 строку для person2.. и повторяется столько раз, сколько у Person1 есть доходы.
$stmt = $pdo->prepare('SELECT i.*, i.amount AS p1_amount, (ВЫБЕРИТЕ сумму ИЗ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb ON i.account_id = jb.account_id И jb.joint_budget_id = ? И jb.position_order = 2 ЗАКАЗ ПО i.id И i.row_type_id ASC) КАК p2_amount ОТ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb ON i.account_id = jb.account_id И jb.joint_budget_id = ? И jb.position_order = 1 ЗАКАЗ ПО i.id И i.row_type_id ASC'); $stmt->execute([$_SESSION['budget_id'], $_SESSION['budget_id']]); $income_rows_1s = $stmt->fetchAll(PDO::FETCH_ASSOC); Мой foreach выглядит так
Объектов нет [/url] Результат выглядит так (картинка) HTML-таблица
Для пользователя 2 доход 1 должен отображаться только 1 раз, а остальное должно быть пустым. Если бы у человека2 был доход 6, то строка дохода6 для человека1 была бы пустой, а затем у человека2 была бы сумма дохода6 в таблице.
Надеюсь, это имеет смысл. Я НЕ опытный/образованный программист, но мне нравится немного программировать в свободное время.
Я пытаюсь отобразить двух конкретных людей (доход пары) в таблице (с помощью цикла foreach PHP). Каждый человек должен быть показан в столбце, а доход — в каждой строке.
Чтобы соединить пару/людей, я создал таблицу «j_b_controller», которая может объединять пары с помощью «joint_budget_id». В j_b_controller также есть столбец «position_order», позволяющий контролировать, где разместить person1 и person2. У Person1 позиции_order = 1 и person2 = 2.
Когда одна из учетных записей входит в систему, я начинаю этот сеанс $_SESSION['budget_id'] = $jointbudget['joint_budget_id'];
Пример: Таблица доходов выглядит следующим образом
У человека1 есть доход 1, доход 2, доход 3 и доход 5. человек2 имеет доход1 Сумма дохода1 у каждого человека неодинакова. Каждый доход имеет свою собственную спецификацию «row_type_id», поэтому у дохода1 есть row_type_id 1.
Таблица доходов
Таблица j_b_controller выглядит следующим образом
У пользователя 1 значения Joint_budget_id = 1 и Position_order = 1. У Person2 значения Joint_budget_id = 1 и Position_order = 2
Таблица j_b_controller
Все должно отображаться в таблице HTML (цикл PHP foreach)
ORDER BY row_type_id
Человек 1 Человек 2 Доход1 Доход1 Доход2 Пусто Доход3 Пусто Доход5 Пусто
Надеюсь, вы видите картинку ниже HTML-таблица
Два SQL-запроса, которые следует соединить/объединить:
//Выбираем доходы от человека с Position_order = 1 $stmt = $pdo->prepare('ВЫБЕРИТЕ i.id, i.name, i.amount AS p2_amount, i.row_type_id ИЗ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb НА i.account_id = jb.account_id И jb.joint_budget_id = ? И jb .position_order = **1** ORDER BY i.id И i.row_type_id ASC'); $stmt->execute([$_SESSION['budget_id']]); $income_rows_122s = $stmt->fetchAll(PDO::FETCH_ASSOC); и
//Выбираем доходы от человека с Position_order = 2 $stmt = $pdo->prepare('ВЫБЕРИТЕ i.id, i.name, i.amount AS p2_amount, i.row_type_id ИЗ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb НА i.account_id = jb.account_id И jb.joint_budget_id = ? И jb .position_order = **2** ORDER BY i.id И i.row_type_id ASC'); $stmt->execute([$_SESSION['budget_id']]); $income_rows_122s = $stmt->fetchAll(PDO::FETCH_ASSOC); Я уже пытался использовать UNION и пытался сделать подзапрос
Мой подзапрос на данный момент является закрытым, но с помощью подзапроса я могу вернуть только 1 строку для person2.. и повторяется столько раз, сколько у Person1 есть доходы.
$stmt = $pdo->prepare('SELECT i.*, i.amount AS p1_amount, (ВЫБЕРИТЕ сумму ИЗ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb ON i.account_id = jb.account_id И jb.joint_budget_id = ? И jb.position_order = 2 ЗАКАЗ ПО i.id И i.row_type_id ASC) КАК p2_amount ОТ доходов i ПРИСОЕДИНЯЙТЕСЬ к j_b_controller jb ON i.account_id = jb.account_id И jb.joint_budget_id = ? И jb.position_order = 1 ЗАКАЗ ПО i.id И i.row_type_id ASC'); $stmt->execute([$_SESSION['budget_id'], $_SESSION['budget_id']]); $income_rows_1s = $stmt->fetchAll(PDO::FETCH_ASSOC); Мой foreach выглядит так
Объектов нет [/url] Результат выглядит так (картинка) HTML-таблица
Для пользователя 2 доход 1 должен отображаться только 1 раз, а остальное должно быть пустым. Если бы у человека2 был доход 6, то строка дохода6 для человека1 была бы пустой, а затем у человека2 была бы сумма дохода6 в таблице.
Надеюсь, это имеет смысл. Я НЕ опытный/образованный программист, но мне нравится немного программировать в свободное время.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение