Я пытаюсь отобразить заказы клиентов, которые хранятся в различных таблицах в базе данных. Я сталкиваюсь с проблемой, когда в заказе куплено более 1 типа товаров. Каждый элемент в заказе хранится в отдельных строках таблицы Transaction
и использует один и тот же PO
, но отличается TransPO
.
Вот таблица образцов
Table: Order
|-----------------------------------------|
| id | PO | Total | CreatedTime |
| 1 | AF24 | 10.00 | 2019-01-17 20:17:36 |
|-----------------------------------------|
Table: CheckoutStatus
|----------------------------------|
| id | PO | PaymentMethod |
| 1 | AF24 | PayPal |
|----------------------------------|
Table: Transaction
|----------------------------------------|
| id | TransPO | PO | Price | QTY |
| 1 | AF21 | AF24 | 3.00 | 1 |
| 2 | AF22 | AF24 | 4.00 | 1 |
| 3 | AF23 | AF24 | 3.00 | 1 |
|----------------------------------------|
Использование этого оператора Select в PHP извлекает данные из всех таблиц, но отображает данные Order
и CheckoutStatus
3 раза.
SELECT
`Order`.*, `CheckoutStatus`.*, `Transaction`.*
FROM
`Order`
INNER JOIN `CheckoutStatus`
ON
Order.PO = CheckoutStatus.PO
INNER JOIN `Transaction`
ON
Order.PO = Transaction.PO
WHERE
Order.PO = 'AF24'
Полученные данные
|--------------------------------------------------------------------------------------------------------------|
| id | PO | Total | CreatedTime | id | PO | PaymentMethod | id | TransPO | PO | Price | QTY |
| 1 | AF24 | 10.00 | 2019-01-17 20:17:36 | 1 | AF24 | PayPal | 1 | AF21 | AF24 3.00 | 1 |
| 1 | AF24 | 10.00 | 2019-01-17 20:17:36 | 1 | AF24 | PayPal | 2 | AF22 | AF24 4.00 | 1 |
| 1 | AF24 | 10.00 | 2019-01-17 20:17:36 | 1 | AF24 | PayPal | 3 | AF23 | AF24 3.00 | 1 |
|--------------------------------------------------------------------------------------------------------------|
Для отображения в Интернете мне нужно показать данные Order
и CheckoutStatus
один раз и показать 3 строки таблицы Transaction
.
Это то, что мне нужно
*Order*
ID: 1
PO: AF24
Total: 10.00
CreatedTime: 2019-01-17 20:17:36
*CheckoutStatus*
ID: 1
PO: AF24
PaymentMethod: PayPal
*Transaction*
ID: 1
TransPO: AF21
PO: AF24
Price: 3.00
QTY: 1
ID: 2
TransPO: AF22
PO: AF24
Price: 4.00
QTY: 1
ID: 3
TransPO: AF23
PO: AF24
Price: 3.00
QTY: 1
но я получаю отображение данных 3 раза
*Order*
ID: 1
PO: AF24
Total: 10.00
CreatedTime: 2019-01-17 20:17:36
*CheckoutStatus*
ID: 1
PO: AF24
PaymentMethod: PayPal
*Transaction*
ID: 1
TransPO: AF21
PO: AF24
Price: 3.00
QTY: 1
*Order*
ID: 1
PO: AF24
Total: 10.00
CreatedTime: 2019-01-17 20:17:36
*CheckoutStatus*
ID: 1
PO: AF24
PaymentMethod: PayPal
*Transaction*
ID: 2
TransPO: AF22
PO: AF24
Price: 4.00
QTY: 1
*Order*
ID: 1
PO: AF24
Total: 10.00
CreatedTime: 2019-01-17 20:17:36
*CheckoutStatus*
ID: 1
PO: AF24
PaymentMethod: PayPal
*Transaction*
ID: 3
TransPO: AF23
PO: AF24
Price: 3.00
QTY: 1
Какие изменения необходимы в операторе Select, чтобы получить нужный мне результат?