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;