0

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

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

因此,基本上每个发布的 modx_site_content.id 的父级为 '24' 将在 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

有什么帮助吗?

4

1 回答 1

1

如果我的理解是正确的,您希望根据 2 个条件获取数据:

 - 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

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

于 2012-06-28T04:50:07.120 回答