mySql:从另一个表中获取行的最新事务

mySql:从另一个表中获取行的最新事务,mysql,Mysql,编辑:我想我明白了。明天我会做进一步的测试,我会回到这篇文章。谢谢大家 我正在尝试查询为tbl\u invty上没有表tbl\u trans中的交易类型为“Idle”的每个项目所做的最后一笔交易。事务的多样性让我在正确查询时感到困惑,到目前为止,我所能做的就是在tbl\u invty.code=tbl\u trans.code上连接下面两个表。如何进行此操作,以便根据列code仅输出tbl\u invty中的第2行和第3行以及tbl\u trans中的第5行和第8行 tbl\U invty +-

编辑:我想我明白了。明天我会做进一步的测试,我会回到这篇文章。谢谢大家

我正在尝试查询为
tbl\u invty
上没有表
tbl\u trans
中的交易类型
为“Idle”的每个项目所做的最后一笔交易。事务的多样性让我在正确查询时感到困惑,到目前为止,我所能做的就是在
tbl\u invty.code=tbl\u trans.code
上连接下面两个表。如何进行此操作,以便根据列
code
仅输出
tbl\u invty
中的第2行和第3行以及
tbl\u trans
中的第5行和第8行

tbl\U invty

+------+-------------+
| CODE | DESCRIPTION |
+------+-------------+
|    1 |         abc |
|    2 |         bbb |
|    3 |         cdf | 
+------+-------------+
tbl_trans

+----------+------+--------+------------+
| TRANS_ID | CODE |   TYPE | TRANS_DATE |           
+----------+------+--------+------------+
|        1 |    1 |    NEW | 2012-09-29 |           
|        2 |    1 | UPDATE | 2012-09-30 |   
|        3 |    1 |   IDLE | 2012-09-30 |        
|        4 |    2 |    NEW | 2012-09-29 |   
|        5 |    2 | UPDATE | 2012-09-30 |   
|        6 |    3 |    NEW | 2012-09-29 |       
|        7 |    3 | UPDATE | 2012-09-30 |           
|        8 |    3 | UPDATE | 2012-09-30 |   
+----------+------+--------+------------+

试着这样做:

SELECT i.des, i.code, max(t.trans_id), max(t.date)
FROM tbl_invty i left join tbl_trans t
ON t.code = i.code
WHERE i.code <> 1 AND t.type <> 'IDLE'
GROUP BY i.code;


<强> < /强> /p>因此,结果不应仅包含具有“代码>空闲< /代码>状态的行,或者如果至少1行具有<代码>空闲< /代码>状态,则不应该包含整个事务。是的,请澄清所需结果,并考虑提供适当的DDL和/或SqLofDelp。

SELECT i.des, i.code, max(t.trans_id), max(t.date)
FROM tbl_invty i left join tbl_trans t
ON t.code = i.code
where t.code not in (select code from tbl_trans
             where type = 'IDLE')
group by i.code;
SELECT tt.*, result.* from tbl_trans tt
INNER JOIN
(SELECT DESCRIPTION, MAX(t.TRANS_ID) as TRANS_ID ,i.`CODE`,  
 GROUP_CONCAT(t.`TYPE`) TYPES
from tbl_invty i
LEFT JOIN tbl_trans t
ON i.CODE = t.CODE
GROUP BY i.`CODE`
HAVING NOT FIND_IN_SET('IDLE',TYPES)) result
ON tt.TRANS_ID = result.TRANS_ID;