所以我有这段代码:
$sql = new Zend_Db_Select($db);
$sql->from("j");
$sql->join("k","k.id = j.id",array());
echo $sql;
导致查询:
SELECT `j`.* FROM `j` INNER JOIN `k` ON k.id = j.id
但我不只是想要j。*
我也想要k。*
如何为此指定zend_db_select?
答案 0 :(得分:2)
join()的第三个参数是select columns
。你已经传了一个空数组。
$sql = new Zend_Db_Select($db);
$sql->from('j');
$sql->join('k','k.id = j.id',array());
echo $sql;
注意:对于此条件k.id = j.id
,您应该使用LEFT JOIN( - > joinLeft(...))
答案 1 :(得分:1)
您可以在from方法中指定列。
$sql->from(array("j" => "j", array("j.*" , "k.*");
老实说,我并不完全确定,但Zend文档是这样说的:)
答案 2 :(得分:0)
如果你还想k.*
,我想你应该有
$sql->join("k","k.id = j.id");
,array()
作为第三个参数
据我所知,第三个参数指定了从k
中选择的列,因为你传递了一个空数组,我猜你要覆盖那个默认值k.*
答案 3 :(得分:0)
您明确告诉联接,当您向其传递空数组时,不希望为k
返回任何列。而是使用:
$sql = new Zend_Db_Select($db);
$sql->from('j');
$sql->joinLeft('k','k.id = j.id');
echo $sql;
这应该产生你想要的东西。
答案 4 :(得分:0)
$sql=new Zend_Db_Select($db);
$sql->from('j',array(
//here fields you want to get from 'j' Ex. 'j.id'
));
$sql->join('k',
// here your condition
'k.id = j.id',
//here the fields you need from 'k'
array(
//now the array is empty!!You need to specify needed fields.
//Or just remove it.Defaults is "k.*"!
));