我需要修改我之前的帖子 如何将具有一对多关系的表组合成1行记录
how to combine tables with 1 to many relationship into 1 line of record
现在我的问题是我的记录现在有一对多的关系。我需要显示的只是最后一条记录并将其组合在一行中 表 tbl_equipment 和 tbl_warranty
这是所需的输出
这是我要实现的代码
SELECT
a.equipmentid,
a.codename,
a.name,
a.labelid,
a.ACQUISITIONDATE,
a.description,
a.partofid,
w1.warrantyid as serviceidwarranty,
w1.startdate,
w1.enddate,
w2.warrantyid as productidwarranty,
w2.startdate,
w2.enddate,
s.equipstatusid,
l.equiplocationid FROM TBL_EQUIPMENTMST a
left JOIN tbl_equipwarranty w1
ON w1.equipmentid=a.equipmentid and w1.serviceproduct = 'service'
left JOIN tbl_equipwarranty w2
ON w2.equipmentid=a.equipmentid and w2.serviceproduct = 'product'
left join tbl_equipstatus s
on a.equipmentid = s.equipmentid
left join tbl_equiplocation l
on a.equipmentid = l.equipmentid WHERE a.equipmentid = '112'
我只想在输出中显示 1 条记录,其中包含保修产品和保修服务的最后一个值。任何人都可以指导我如何修改我的代码,以便当我尝试加入上面列出的所有表时只能生成 1 条记录,并将最后一条保修记录作为输出。 我使用 Firebird 作为数据库。如果您在 mysql 中有解决方案,请告诉我,我会尝试在 firebird 中找到对应的解决方案。
最佳答案
with summary as(
select e.equipmentid ,e.Codename,e.Name,w.warrantyid ,w.Satartdate ,w.Enddate,w.warrantytype
from Eqp e
join Warranty w
on(w.equipmentid =e.equipmentid )
where w.warrantyid =3)
select *,w.warrantyid,w.Satartdate ,w.Enddate,w.warrantytype
from summary s
join Warranty w
on s.Satartdate =w.Satartdate and s.Enddate =w.Enddate
where w.warrantyid =4
关于mysql - 将具有 1 到 N 关系的表合并为 1 行记录,并使用 N 条记录的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882396/