ti-enxame.com

API para Union All na consulta JDatabase

Alguém pode me indicar a documentação sobre como usar o Union All na consulta do JDatabase? Obrigado Mike

2
Mike H

Lembre-se sempre de olhar para a API do Joomla, caso não consiga encontrar nada na documentação. UnionAll é mencionado aqui:

http://api.joomla.org/cms-3/classes/JDatabaseQuery.html#method_unionAll

0
Lodder

E não se esqueça do Joomla! Documentos :)

http://docs.joomla.org/Using_the_union_methods_in_database_queries

Aqui está um exemplo do Documentos.

Suponha que você queira enviar a correspondência para todos os clientes e fornecedores e que os nomes e endereços de email sejam armazenados em tabelas denominadas, sem surpresa, clientes e fornecedores, respectivamente.

Esta consulta recuperará todas as informações do cliente que precisamos para o mailshot:

$query
    ->select('name, email')
    ->from('customers')
    ;
$mailshot = $db->setQuery($query)->loadObjectList();

embora essa consulta faça o mesmo para todos os fornecedores:

$query
    ->select('name, email')
    ->from('suppliers')
    ;
$mailshot = $db->setQuery($query)->loadObjectList();

Em seguida, você pode combinar os resultados em uma única consulta como esta:

$query
    ->select('name, email')
    ->from('customers')
    ->union($q2->select('name , email')->from('suppliers'))
    ;
$mailshot = $db->setQuery($query)->loadObjectList();

O conjunto de resultados obtido da consulta de união será um pouco diferente da execução de consultas individuais separadamente, porque a consulta de união eliminará automaticamente duplicatas. Se você não se importa que o conjunto de resultados possa conter duplicatas (o que, matematicamente, significa que não é um conjunto), usar unionAll em vez de union melhorará o desempenho.

2
Dmitry Rekun