从多个表中拉出多行并使用一个MySQL查询对它们进行排序

时间:2016-09-05 02:07:40

标签: php mysql row

我有两个表,purchase_event_tickets和membership_purchases,两个表都跟踪客户为活动门票购买或会员续订付款所做的付款。从理论上讲,这是表格的外观:

Membership_purchases表:

order_id | total_amount | date_of_purchase   | memberid |
2        | 392.42       | 2015-09-23 9:30:23 | 23       |
3        | 423.23       | 2016-09-12 6:23:12 | 49       |

Purchased_event_tickets表:

order_id | total_amount | purchase_date      | memberid |
7        | 392.42       | 2014-09-23 9:10:23 | 23       |
1        | 423.23       | 2013-09-12 7:23:12 | 49       |

我想我可以使用以下查询使用以下代码从两个表中提取所有4行:

SELECT *
FROM purchased_event_tickets, membership_purchases

但是,我希望在购买日期之前订购这四行,而且我不确定如何从两张桌子上拉下来。

我想我会寻找以下内容:

SELECT * FROM purchased_event_tickets, membership_purchases ORDER BY purchase_date AND date_of_purchase DESC

我不确定该查询是否可行,但如果确实如此,它将按以下顺序返回行:

order_id | total_amount | date               | memberid |
3        | 423.23       | 2016-09-12 6:23:12 | 49       |
2        | 392.42       | 2015-09-23 9:30:23 | 23       |
7        | 392.42       | 2014-09-23 9:10:23 | 23       |
1        | 423.23       | 2013-09-12 7:23:12 | 49       |

有谁知道如何获得这种类型的订购?

1 个答案:

答案 0 :(得分:1)

我认为你想要union all,而不是join

SELECT order_id, total_amount, date_of_purchase as date, memberid
FROM purchased_event_tickets
UNION ALL
SELECT order_id, total_amount, purchase_date as date, memberid
FROM membership_purchases mp
ORDER BY date DESC;