我有两个表,名为测试和结果。
现在,我需要一个查询来比较两个表,并填充那些没有使用候选人id完成测试的详细考生。我正在使用zend框架工作,请指导我,我正在使用此代码,但它不起作用
$dbTableInfo = $this->getDbTable()->info();
$select->from(array(
'c1' => 'test'),
array('c1.candidate_id',
"CONCAT( c1.first_name,
' ',
c1.last_name ) AS full_name",
'c1.active',
'c1.sendlink',
'c1.date_added',
'c1.username',
'c1.date_modified',
'c1.test_id')
);
$select->joinLeft(array('re'=>'result'));
$select->where("c1.business_id='" . $cid . "' AND 'c1.candidate_id NOT IN(re.candidate_id)'");
$select->order('c1.candidate_id');发布于 2012-05-24 16:58:25
很抱歉没有回答您的问题,但是为什么不简单地使用带有判别器字段的单个表(例如,这个字段将被称为type ),并以如下方式使用:
发布于 2012-05-25 20:49:11
也许您忘了在joinLeft中指定条件?
发布于 2012-05-25 22:13:19
来自zend docs:
使用joinLeft(表、条件、列)方法左联接。包括左操作数表中的所有行,包括右侧操作数表中的匹配行,如果不存在与左表匹配的行,则填充右侧操作数表中的列为空。
在查询中,您既没有指定条件,也没有指定要返回的列。
例如,您可以这样进行连接:
$select->from(array(
'c1' => 'test'),
array('c1.candidate_id',
"CONCAT( c1.first_name,
' ',
c1.last_name ) AS full_name",
'c1.active',
'c1.sendlink',
'c1.date_added',
'c1.username',
'c1.date_modified',
'c1.test_id')
);
$select->joinLeft(
array('re'=>'result'),
'"c1".candidate_id = "re".candidate_id',
"*"
);https://stackoverflow.com/questions/10736758
复制相似问题