问题描述
|
所以我有这段代码:
$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?
解决方法
join()的第三个参数是select的“ 2”。您已传递一个空数组。
$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(...))
, 您可以在from方法中指定列。
$sql->from(array(\"j\" => \"j\",array(\"j.*\",\"k.*\");
老实说,我不确定,但是Zend文档是这样说的:)
, 如果你还想要六英镑,我想你应该
$sql->join(\"k\",\"k.id = j.id\");
,不带array()
作为第三个参数。
据我所知,第三个参数指定要从k
中选择的列,由于您传递了一个空数组,我猜测您将覆盖默认的k.*
, 您明确地告诉联接,当您向其传递空数组时,您不希望为ѭ9返回任何列。而是使用:
$sql = new Zend_Db_Select($db);
$sql->from(\'j\');
$sql->joinLeft(\'k\',\'k.id = j.id\');
echo $sql;
我认为应该可以产生您想要的。
, $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.*\"!
));