От рабочий код
<?php $nodes = db_query(
"
SELECT DISTINCT u.nid AS nid, u.model AS model, n.title AS title
FROM
uc_products u
INNER JOIN node n ON n.nid = u.nid
WHERE ( u.model LIKE :model )
AND( if ( ( select count(*) from uc_products tt where tt.model = concat('msk', SUBSTRING(u.model,4) ) ) = 0, 1, 0 ) )
",
array(':model' => '%'.db_like('vlg').'%' )
)
->fetchAll();?>
А в этом итоговый скль строит некорректно.
<?php $query = db_select('uc_products', 'u');
$query->distinct();
$query->innerJoin('node', 'n', 'n.nid = u.nid');
$query->condition('model', db_like('vlg') . '%', 'LIKE');
$query->addExpression("if ( ( select count(*) from uc_products tt where tt.model = concat('msk', SUBSTRING(u.model,1,3) ) ) > 0, 1, 0 )");
$query->fields( 'u', array('nid','model') );
$query->fields( 'n', array('title') );
$nodes = $query->execute()->fetchAll();?>
Как переписать первый код. что бы второе условие добавлялось куда надо?