Resource 1 myTagTV: one,two,three productType: single Resource 2 myTagTV: three,four,five productType: single Resource 3 myTagTV: four,five,six productType: double
$c = $modx->newQuery('modTemplateVarResource');
$c->innerJoin('modTemplateVar','TemplateVar');
$c->innerJoin('modResource','Resource');
$c->where(array(
'TemplateVar.name' => 'myTagTV'
'Resource.published' => '1'
));
$resourceTags = $modx->getCollection('modTemplateVarResource',$c);$c = $modx->newQuery('modTemplateVarResource');
$c->innerJoin('modTemplateVar','TemplateVar');
$c->innerJoin('modResource','Resource');
$c->where(array(
'TemplateVar.name' => 'productType',
'modTemplateVarResource.value' => 'single',
'Resource.published' => '1'
));
$c->select($modx->getSelectColumns('modTemplateVarResource', 'modTemplateVarResource', '', array('contentid')));
$c->prepare();
$c->stmt->execute();
$res = $c->stmt->fetchAll(PDO::FETCH_COLUMN, 0);
$c = $modx->newQuery('modTemplateVarResource');
$c->innerJoin('modTemplateVar','TemplateVar');
$c->innerJoin('modResource','Resource');
$c->where(array(
'TemplateVar.name' => 'myTagTV',
'Resource.published' => '1',
'modTemplateVarResource.contentid:IN' => $res
));
$resourceTags = $modx->getCollection('modTemplateVarResource',$c);
give it a shot
$typeTVid = '5';
$tagTVid = '7';
$type = 'single';
$c = $modx->newQuery('modResource');
$c->select($modx->getSelectColumns('modResource','modResource','',array('id')));
$c->select('tag.value');
$c->leftJoin('modTemplateVarResource','type','type.tmplvarid = ' . $typeTVid . ' AND type.contentid = modResource.id');
$c->leftJoin('modTemplateVarResource','tag','tag.tmplvarid = ' . $tagTVid . ' AND tag.contentid = modResource.id');
$c->where(array(
'modResource.published' => '1',
'type.value' => $type
));