我有这个问题:
SELECT g.title, g.asin, g.platform_id, r.rank
FROM games g
INNER JOIN ranks r ON ( g.id = r.game_id )
ORDER BY r.rank DESC
LIMIT 5`
现在,这是我使用Zend_Db_Select
的JOIN,但它给了我数组错误
$query = $this->select();
$query->from(array('g' => 'games'), array());
$query->join(array('r' => 'ranks'), 'g.id = r.game_id', array('g.title', 'g.asin', 'g.platform_id', 'r.rank'));
$query->order('r.rank DESC');
$query->limit($top);
$resultRows = $this->fetchAll($query);
return $resultRows;
任何人都知道我做错了什么?我希望显示“游戏”中的所有列以及排名表中的“排名”列。
答案 0 :(得分:10)
我会假设你已经解决了这个问题,但为其他人留下答案会很好。
在选择对象的实例化下添加此项。
$query->setIntegrityCheck(false);
答案 1 :(得分:5)
您还可以输入更少的字符....
$query = $this->select()
->from(array('g' => 'games'), array('title', 'asin', 'platform_id'))
->join(array('r' => 'ranks'), 'g.id = r.game_id', array('rank'))
->order('r.rank DESC')
->limit($top);
return $this->fetchAll($query);
祝你好运!
答案 2 :(得分:0)
以下是我写的方式:
$query = $this->select();
$query->from(array('g' => 'games'), array('title', 'asin', 'platform_id'));
$query->join(array('r' => 'ranks'), 'g.id = r.game_id', array('rank'));
$query->order('r.rank DESC');
$query->limit($top);
$resultRows = $this->fetchAll($query);
return $resultRows;
答案 3 :(得分:0)
其他例子:
select n.content, n.date, u.mail from notes n, users u where n.id_us=u.id and reminder=current_date $query = $this->select() ->from(array('n'=>'notes'), array('content', 'date')) ->join(array('u'=>'users'), 'n.id_us=u.id and n.reminder=current_date', array('mail')) ->setIntegrityCheck(false); return $this->fetchAll($query);
这很好用。)