Spojení dvou Selection (nebo spíše sečtení) stejných tabulek v jednu
- thm
- Člen | 149
Zdarvím,
prosím o pomoc, asi to nebude nic složitého ale nemůžu to najít.
Potřeboval bych spojit dvě selection (stejných tabulek) v jednu.
Příklad (trošku absurdní, protože se to nechá řešit OR):
$a = $this->connection->table('users')->where('role','admin');
$b = $this->connection->table('users')->where('role','manager');
$selection = ??? ->order('name');
V $selection potřebuju Nette\Database\Selection kde budou sloučené obě
tabulky takže výstup bude např.:
id role name
1 admin Alois
5 manager Tomáš
3 admin Vojtěch
Díky za tip
Editoval thm (23. 10. 2013 10:07)
- thm
- Člen | 149
Díky za odpověď, ale potřebuji trošku něco jiného. Vezmu to obecně.
Mám Database\Selection $a nějaké tabulky A (byly použity
where()->where())
Mám Database\Selection $b nějaké tabulky A (byly použity
where()->where())
A teď mě zajímá jestli je možné získat Database\Selection $c kde budou všechny záznamy z obou selection $a a $b? (K tomu prvnímu selectu přidat záznamy toho druhého selectu, aby mi z toho vzniknul nový selection)
Editoval thm (23. 10. 2013 11:04)
- enumag
- Člen | 2118
Nedá, k čemu to potřebuješ? Když posledně někdo něco takového chtěl do datagridu tak jsem mu doporučil AppendIterator. To ale neřeší řazení toho sloučeného výběru. Takže mne napadá jen databázové view a union. Nebo lépe refactoring aby ty data nebyly ve dvou tabulkách a šlo je vybrat jedním dotazem.
Editoval enumag (23. 10. 2013 13:01)
- thm
- Člen | 149
Díky za odpovědi, tak jsem to nemohl asi najít oprávněně. Ono se to těžko vysvětluje k čemu to potřebuju, jednu selection si získám poměrně složitým dotazem, ale nejde to skloubit do jednoho řádku s tím druhým dotazem, tak mě napadlo, že by něco takového mohlo jít.
Nakonec jsem to vyřešil poměrně jednoduchým předěláním databáze a aplikace, takže už to jde jedním dotazem.
Díky, aspoň vím, že to nejde.