每个modx_site_content记录在modx_site_tmplvar_contentvalues中可能有几条记录。
我需要检索modx_site_tmplvar_contentvalues.value,其中tvv.tmplvarid = 3和tvv.tmplvarid = 1.其中tvv.tmplvarid是未来日期,我需要返回tvv.tmplvarid 3的tvv.value,这是以逗号分隔的标签列表。
此查询不会返回我需要的值&我不确定如何得到我想要的东西。
SELECT sc.id, sc.pagetitle, tvv.value, tvv.tmplvarid, tvv.id, tvv.value
FROM modx_site_content sc
left join modx_site_tmplvar_contentvalues tvv on tvv.contentid = sc.id
where published = '1'
and (tvv.tmplvarid = '3' and tvv.value >= curdate())
order by sc.id;
基本上最后我需要只返回标签列表(tvv.tmplvarid = 3),其中其他相关记录(tvv.tmplvarid = 1)是未来的日期。
任何想法,这可以通过分组来完成吗?我实际上并不需要modx_site_content表中的任何内容。
答案 0 :(得分:1)
因此,您需要返回modx_site_tmplvar_contentvalues
表中tmplvarid
表中{1}}的所有行,这两行都与同一modx_site_content
相关,但仅限于tmplvarid
3行将来会有一个日期时间字段吗?
我会对modx_site_tmplvar_contentvalues tabe进行两次单独的连接:
SELECT tOne.value, tThree.value
FROM modx_site_tmplvar_contentvalues tOne
INNER JOIN modx_site_content c ON tOne.contentid = c.id
INNER JOIN modx_site_tmplvar_contentvalues tThree ON tThree.contentid = c.id
WHERE c.published = 1
AND tOne.tmplvarid = 1
AND tThree.tmplvarid = 3 AND tThree.date > NOW()
SQL小提琴: http://sqlfiddle.com/#!2/a4031/2
答案 1 :(得分:0)
我明白了。如果您只是阅读文档,那么您可以做的很棒;)
select tv.contentid, tv.value as eventdate, sc.id, sc.pagetitle, tvv.value from
(
select * from modx_site_tmplvar_contentvalues cv
where cv.tmplvarid = 3
and cv.value >= curdate()
) as tv
left join modx_site_content sc on sc.id = tv.contentid
left join modx_site_tmplvar_contentvalues tvv on tvv.contentid = sc.id
where (tvv.tmplvarid = 1)
order by value asc