我想在两个表上执行内连接。
表A -
ITEM_ID
ITEM_TITLE
VARx前提
表B -
ITEM_ID
变化
someVar
这就是我使用RAW SQL查询完成此操作的方法。
$sql = 'SELECT tableA.item_id, tableY.item_title AS Name, 5 * varX + 5 * count(*) AS myScore
FROM tableA
INNER JOIN tableY ON tableA.item_id=tableY.item_id
WHERE someVar=\'8\'
GROUP BY item_id
ORDER BY myScore DESC
LIMIT 10';
$stmt = $this->_db->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
现在我想使用Zend Query来做这件事。
这就是我写的 -
$data = $this->_db->select()
->from(array('tablA'=>'tableA'), array('item_id', 'item_title'), 'myScore'=>'(5*'tableA'.'varX') + 5*count(*)')
->joinInner(array('tablB'=>'tableB'), 'tablA'.'item_id' = 'tablB'.'item_id')
->where('someVar = 8')
->GROUP('item_id')
->order('myScore DESC')
->limit(10);
$dataResult = $this->_db->fetchAll($data);
但是我收到了这个错误 -
syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')'
in - > from(array(' tablA' =>' tableA'),数组(' item_id',&#39 ; item_title'),' myScore' =>'(5 ' tableA'。' varX')+ 5 * count ()&#39)
我不知道该怎么做,因为我已经阅读了官方文档,但仍然无法解决这个问题。任何帮助表示赞赏!
答案 0 :(得分:1)
引号在您的代码中以错误的方式使用。此外,似乎你已经使用'myScore'
字段的不必要的第三个参数。它应该放在第二个参数中。尝试以下内容:
...
$data = $this->_db->select()
->from(array('tablA'=>'tableA'), array('item_id', 'item_title', 'myScore'=>'(5 * tableA.varX) + 5*count(*)'))
->joinInner(array('tablB'=>'tableB'), 'tablA.item_id = tablB.item_id')
->where('someVar = 8')
->group('tablA.item_id')
->order('myScore DESC')
->limit(10);