Zend 2 中两个表的联合

Union of two tables in Zend 2

我想在 zf2 中使用 where 子句合并两个表:-

表 1 app_followers
表 2 app_users
条件可以是任何东西
并按 updated_date.

排序

请告诉我有关 zend 2 的查询。

谢谢..

使用 UNIONZF2:

使用ZF2专用classCombineZend\Db\Sql\Combine

    new Combine(
     [
      $select1,
      $select2,
      $select3,
       ...
     ]
    )

使用combine的详细例子如下:

$select1 = $sql->select('java');
$select2 = $sql->select('dotnet');
$select1->combine($select2);

$select3 = $sql->select('android');

$selectall3 = $sql->select();
$selectall3->from(array('sel1and2' => $select1));
$selectall3->combine($select3);

$select4 = $sql->select('network');

$selectall4 = $sql->select();
$selectall4->from(array('sel1and2and3' => $selectall3));
$selectall4->combine($select4);

$select5 = $sql->select('dmining');

$selectall5 = $sql->select();
$selectall5->from(array('sel1and2and3and4' => $selectall4));
$selectall5->combine($select5);

相当于 UNION 的正常 SQL 查询:

SELECT * FROM java 
UNION SELECT * from dotnet 
UNION SELECT * from android 
UNION SELECT * from network;
UNION SELECT * from dmining;

希望对您有所帮助。

我想做一个类似的任务,花了很多时间来弄清楚如何以正确的方式做到这一点。

Laminas\Db\Sql\Combine 的想法非常好,但您不能将排序应用到此对象,因此在这种情况下它是无用的。

最后,我得到了下一个代码:

$skill = $sql->select('skill');
$language = $sql->select('language');
$location = $sql->select('location');
$occupation = $sql->select('occupation');

$skill->combine($language);
$language->combine($location);
$location->combine($occupation);

$combined = (new Laminas\Db\Sql\Select())
    ->from(['sub' => $skill])
    ->order(['updated_date ASC']);

不过,括号有点乱。如果这对你来说很重要,请在Github上检查这个comment,但在MySQL上id无所谓,不确定其他数据库。