Как объединить два SQL-запроса в один и отобразить в цикле foreach PHPPhp

Кемеровские программисты 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, поэтому income1 имеет row_type_id = 1.
Таблица доходов
id имя account_id сумма примечание row_type_id date_added 1 Доход1 1 14000,99 1 2022-01-01 00:00:00 2 Доход2 1 1900,99 2 2022-01-03 00:00:00 3 Доход3 1 3269,99 3 2022-01-06 00:00:00 4 Доход1 2 5200,99 1 2022-01-01 00:00:00 5 Доход5 1 130,99 5 2022-01-01 00:00:00
Таблица j_b_controller выглядит следующим образом
[*]У пользователя 1 значения Joint_budget_id = 1 и Position_order = 1. [*]У Person2 значения Joint_budget_id = 1 и Position_order = 2.
Таблица j_b_controller
id account_id joint_budget_id принять_приглашение position_order date_added 1 1 1 1 2022-02-10 11:45:22 2 2 1 2 2022-02-11 11:45:24
Все должно отображаться в таблице HTML (цикл PHP foreach)

ORDER BY row_type_id
Человек 1 Человек 2 Доход1 Доход1 Доход2 Пусто Доход3 Пусто Доход5 Пусто
Надеюсь, вы видите картинку ниже
Изображение


Два 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] Результат выглядит так (картинка)
Изображение


Для пользователя 2 доход 1 должен отображаться только 1 раз, а остальное должно быть пустым. Если бы у человека2 был доход 6, то строка дохода6 для человека1 была бы пустой, а затем у человека2 была бы сумма дохода6 в таблице.

Надеюсь, это имеет смысл. Я НЕ опытный/образованный программист, но мне нравится немного программировать в свободное время.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как объединить два SQL-запроса в один и отобразить в цикле foreach PHP
    Гость » » в форуме Php
    0 Ответы
    64 Просмотры
    Последнее сообщение Гость
  • Как объединить два SQL-запроса в один и отобразить в цикле foreach PHP
    Гость » » в форуме Php
    0 Ответы
    63 Просмотры
    Последнее сообщение Гость
  • Как объединить два SQL-запроса в один и отобразить в цикле foreach PHP
    Гость » » в форуме Php
    0 Ответы
    79 Просмотры
    Последнее сообщение Гость
  • Отобразить два массива в цикле foreach в Php?
    Anonymous » » в форуме Php
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Отобразить два массива в цикле foreach в Php?
    Anonymous » » в форуме Php
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»