[英]MySQL join another table
I have 2 tables as follow :: 我有2张桌子,如下:
order table :: 订单表::
order_id | store_id | member_id | create_tstamp
90 2 15 28/07/2014 15:35:00
91 2 16 29/07/2014 16:11:12
92 2 15 30/07/2014 08:07:12
93 2 15 01/08/2014 09:33:12
transferPayment table :: transferPayment表::
transfer_id | order_id | amount | transfer_time | create_tstamp
1 90 1000 30/07/2014 11:00:00 30/07/2014 12:00:00
2 90 800 30/07/2014 11:00:00 30/07/2014 13:14:56
3 90 956 30/07/2014 11:00:00 30/07/2014 14:16:17
4 91 385 01/08/2014 14:35:00 01/08/2014 16:18:17
5 91 390 01/08/2014 14:35:00 01/08/2014 16:30:17
6 92 198 05/08/2014 15:11:11 06/08/2014 17:18:18
I want to join two tables.The condition is order table much be join transferPayment table that have order_id same as and create_tstamp in transferPayment table is recently only. 我想联接两个表。条件是订单表必须是与transferPayment表中具有order_id和create_tstamp相同的transferPayment表的联接。
Finally. 最后。 There will be result as follows:
结果如下:
order_id | store_id | member_id | create_tstamp | transfer_id | amount | transfer_time | create_tstamp
90 2 15 28/07/2014 15:35:00 3 956 30/07/2014 11:00:00 30/07/2014 13:14:56
91 2 16 29/07/2014 16:11:12 5 390 01/08/2014 14:35:00 01/08/2014 16:30:17
92 2 15 30/07/2014 08:07:12 6 198 05/08/2014 15:11:11 06/08/2014 17:18:18
What is MySQL command to slove this? 什么是MySQL命令来解决这个问题?
As far as the join query goes, this should work: 就联接查询而言,这应该起作用:
SELECT *
FROM order_table
INNER JOIN transfer_payment
ON order_table.order_id=transfer_payment.order_id;
However to me it's unclear what your exact conditions are (order by date, etc?), could you try making that a bit clearer? 但是对我来说,您的确切条件是什么(按日期排序,等等?)还不清楚,您可以尝试更清楚一点吗?
It should be something like: 应该是这样的:
SELECT *
FROM (order JOIN transferPayment ON order.order_id = transferPayment.order_id)
WHERE order.create_tstamp = transferPayment.create_tstamp;
I did not quite understand if you want to order it by something but this will join the same 'order_id' and show the rows with same 'create_tstamp' 我不太了解您是否要按顺序对其进行排序,但这将加入相同的“ order_id”并显示具有相同“ create_tstamp”的行
to get most recent transferPayment you'll have to use max(transfer_id)
and group by order_id
like below query maybe? 为了获得最新的transferPayment,您将必须使用
max(transfer_id)
并按group by order_id
例如以下查询?
SELECT o.order_id,o.store_id,o.member_id,o.create_tstamp as order_create_tstamp,
t.transfer_id,t.amount,t.transfer_time,t.create_tstamp as transfer_create_tstamp
FROM
transferPayment t
INNER JOIN
(SELECT max(transfer_id) as transfer_id,order_id
FROM transferPayment
GROUP BY order_id) t2
ON t.transfer_id = t2.transfer_id AND t.order_id = t2.order_id
INNER JOIN
`order` o
ON o.order_id = t.order_id
here's the sqlfiddle demo 这是sqlfiddle演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.