PHP MySQL选择查询联接语句以在多行表中显示数据

时间:2019-01-19 06:45:30

标签: php mysql select inner-join

我正在尝试显示存储在数据库中各个表中的客户订单。当订单中购买的商品类型超过一种时,我遇到一个问题。订单中的每个项目都存储在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语句从所有表中检索数据,但显示OrderCheckoutStatus数据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     |
|--------------------------------------------------------------------------------------------------------------|

对于网络显示,我需要一次显示OrderCheckoutStatus数据,并显示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语句中需要进行哪些编辑才能获得所需的结果?

0 个答案:

没有答案