Zend 2 中两个表的联合
Union of two tables in Zend 2
我想在 zf2 中使用 where 子句合并两个表:-
表 1 app_followers
表 2 app_users
条件可以是任何东西
并按 updated_date.
排序
请告诉我有关 zend 2 的查询。
谢谢..
使用 UNION 是 ZF2:
使用ZF2专用classCombine
Zend\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无所谓,不确定其他数据库。
我想在 zf2 中使用 where 子句合并两个表:-
表 1 app_followers
表 2 app_users
条件可以是任何东西
并按 updated_date.
请告诉我有关 zend 2 的查询。
谢谢..
使用 UNION 是 ZF2:
使用ZF2专用classCombine
Zend\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无所谓,不确定其他数据库。