【发布时间】:2019-10-04 15:57:33
【问题描述】:
我有一个名为 mov_entrys 的表,它们有多个历史记录,换句话说,重复记录这是我的主要 SQL 语句
SELECT me.mov_entry_id, me.mov_entry_ean13, me.plate, mv.name vehiclename,
ma.name areaname, ml.name locationame, me.value, mov_pay.name paytype ,me.validated, me_usu.name operatorName,
to_char(me.created_at, 'DD/MM/YYYY HH24:MI:SS') created_at,
to_char(me.updated_at, 'DD/MM/YYYY HH24:MI:SS') updated_at
FROM mov_entrys me
LEFT OUTER JOIN mov_payment_type mov_pay on mov_pay.mov_payment_type_id = me.mov_payment_type_id
JOIN mov_vehicles mv ON me.mov_vehicle_id = mv.mov_vehicle_id
JOIN mov_areas ma ON me.mov_area_id = ma.mov_area_id
JOIN mov_locations ml ON ma.mov_location_id = ml.mov_location_id
JOIN mov_users me_usu ON me.mov_user_id = me_usu.mov_user_id
WHERE me.value > 0
AND me.validated <> 'O'
AND me.validated <> 'V'
AND me.validated <> 'I'
AND me.created_at >= date_trunc('month', NOW()) - '1 month'::interval
order by mov_entry_id desc
但是记录是这样的例子:
id ean13 value validated created_at updated_at
1 7800003378198 0 N 2019-10-04 09:00:31 2019-10-04 09:00:31
2 7800003378198 8 S 2019-10-04 13:01:11 2019-10-04 13:01:11
3 7800003378198 10.5 AD 2019-10-04 13:02:13 2019-10-04 13:02:13
3 7800003378198 10.5 I 2019-10-04 13:05:13 2019-10-04 13:05:13
在 Laravel 中,创建数据时 created_at 和 updated_at 是相同的数据,但我希望这条记录的开始日期和最后日期具有相同的 ean13 数据 7800003378198
主查询返回我想要的记录,但数据相同,我想要真实创建的数据和最后的数据
如果你认为记录在顶部,我想要这样的回报,如果我使用组我不能这样
id ean13 value validated created_at updated_at
2 7800003378198 8 S 2019-10-04 09:00:31 2019-10-04 13:05:13
3 7800003378198 10.5 AD 2019-10-04 09:00:31 2019-10-04 13:05:13
我尝试进行子查询,但我不知道为什么总是进行无限加载以返回数据我认为我做错了什么,这是我的子查询查询
SELECT me.mov_entry_id, me.mov_entry_ean13, me.plate, mv.name vehiclename,
ma.name areaname, ml.name locationame, me.value, mov_pay.name paytype ,me.validated, me_usu.name operatorName,
to_char(me.created_at, 'DD/MM/YYYY HH24:MI:SS') created_at,
to_char(me.updated_at, 'DD/MM/YYYY HH24:MI:SS') updated_at,
(
SELECT me_v2.created_at FROM mov_entrys me_v2 WHERE me.mov_entry_ean13 = me_v2.mov_entry_ean13
ORDER BY me_v2.created_at DESC
LIMIT 1
) date_test
FROM mov_entrys me
LEFT OUTER JOIN mov_payment_type mov_pay on mov_pay.mov_payment_type_id = me.mov_payment_type_id
JOIN mov_vehicles mv ON me.mov_vehicle_id = mv.mov_vehicle_id
JOIN mov_areas ma ON me.mov_area_id = ma.mov_area_id
JOIN mov_locations ml ON ma.mov_location_id = ml.mov_location_id
JOIN mov_users me_usu ON me.mov_user_id = me_usu.mov_user_id
WHERE me.value > 0
AND me.validated <> 'O'
AND me.validated <> 'V'
AND me.validated <> 'I'
AND me.created_at >= date_trunc('month', NOW()) - '1 month'::interval
order by mov_entry_id desc
当我单独执行此查询时,它可以正常工作,给我最后一条记录, 我做错了什么?这是我的测试查询:
SELECT me.created_at FROM mov_entrys me WHERE me.mov_entry_ean13 = '7800003378198'
ORDER BY me.created_at DESC
LIMIT 1
我的魔法
【问题讨论】:
标签: sql postgresql