简体   繁体   English

MySQL加入另一个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM