我正在尝试显示存储在数据库中各个表中的客户订单。当订单中购买的商品类型超过一种时,我遇到一个问题。订单中的每个项目都存储在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 |
|----------------------------------------|
在PHP中使用此Select语句从所有表中检索数据,但显示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
数据,并显示Transaction
表的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
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语句中需要进行哪些编辑才能获得所需的结果?