在查询时遇到一些麻烦,想知道是否有人可以提供帮助:

我正在尝试从modx_site_tmplvar_contentvalues中选择所有tvv.value [s],其中tvv.tmplvarid = 1和tvv.tmplvarid = 3的tvv.value是大于或等于今天的日期。

因此,基本上每个发布的且其父级为'24'的modx_site_content.id都将在modx_site_tmplvar_contentvalues表中至少包含2个条目,其中一个tmplvarid为'1',其值将是一个逗号分隔的列表,另一个值为tmplvarid' 3',这将是一个日期戳。

我需要从modx_site_tmplvar_contentvalues表中选择所有值,其中tmplvarid为'1'[逗号分隔列表],其中第二个条目tmplvarid等于'3'是大于今天的日期,并且modx_site_content条件发布=' 1”,父级=“ 24”

这是我的查询[不起作用]

SELECT sc.id, sc.pagetitle, tvv.value, tvv.tmplvarid, tvv.id
FROM modx_site_content sc
left join modx_site_tmplvar_contentvalues tvv on tvv.contentid = sc.id
where published = '1'
and parent = '24'
and (tvv.tmplvarid = '3' or tvv.tmplvarid = '1')
and tvv.value >= curdate()
group by sc.id
order by sc.id


有什么帮助吗?

最佳答案

如果我的理解是正确的,则希望基于以下两个条件获取数据:

 - tmplvarid = '1'
 - tmplvarid = '3' and value >= curdate()


如果是这样,请尝试以下操作:

SELECT sc.id, sc.pagetitle, tvv.value, tvv.tmplvarid, tvv.id
FROM modx_site_content sc
left join modx_site_tmplvar_contentvalues tvv on tvv.contentid = sc.id
where published = '1'
and parent = '24'
and ((tvv.tmplvarid = '3' and tvv.value >= curdate()) or (tvv.tmplvarid = '1'))
order by sc.id


如果我误解了你的问题,请纠正我。

09-08 07:06