it-swarm.it

API per Union All nella query JDatabase

Qualcuno può indicarmi la documentazione su come utilizzare Union All in JDatabase Query? Grazie Mike

2
Mike H

Ricorda sempre di guardare l'API di Joomla se non riesci a trovare nulla nella documentazione. UnionAll è menzionato qui:

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

0
Lodder

E non dimenticare di Joomla! Documenti :)

http://docs.joomla.org/Using_the_union_methods_in_database_queries

Ecco un esempio dai documenti.

Supponiamo di voler inviare la posta a tutti i clienti e tutti i fornitori e che i nomi e gli indirizzi e-mail siano memorizzati in tabelle chiamate, ovviamente, clienti e fornitori, rispettivamente.

Questa query recupererà tutte le informazioni sui clienti di cui abbiamo bisogno per il mailshot:

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

mentre questa query farà lo stesso per tutti i fornitori:

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

Quindi puoi combinare i risultati in una singola query come questa:

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

Il set di risultati ottenuto dalla query Union sarà in realtà un po 'diverso dall'esecuzione delle singole query separatamente poiché la query Union eliminerà automaticamente i duplicati. Se non ti dispiace che il set di risultati possa contenere duplicati (che matematicamente parlando non è un set), l'utilizzo di unionAll anziché union migliorerà le prestazioni.

2
Dmitry Rekun