it-swarm-tr.com

Veritabanı Sorgusunda Birlik için API

Birisi beni JDatabase Query'de Union All'in nasıl kullanılacağına ilişkin belgelere yönlendirebilir mi? Teşekkürler, Mike

2
Mike H

Belgelerde hiçbir şey bulamazsanız her zaman Joomla API'sine bakmayı unutmayın. UnionAll burada belirtilmiştir:

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

0
Lodder

Ve Joomla'yı unutmayın! Dokümanlar :)

http://docs.joomla.org/Using_the_union_methods_in_database_queries

İşte Dokümanlar'dan bir örnek.

Postayı tüm müşterilere ve tüm tedarikçilere göndermek istediğinizi ve adların ve e-posta adreslerinin sırasıyla şaşırtıcı olmayan bir şekilde müşteriler ve tedarikçiler olarak adlandırılan tablolarda saklandığını varsayalım.

Bu sorgu posta noktası için ihtiyaç duyduğumuz tüm müşteri bilgilerini alacaktır:

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

bu sorgu tüm tedarikçiler için aynısını yapar:

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

Sonra sonuçları şöyle tek bir sorguda birleştirebilirsiniz:

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

Birleşim sorgusundan elde edilen sonuç kümesi, birleşim sorgusu yinelemeleri otomatik olarak ortadan kaldıracağından, tek tek sorguları ayrı ayrı çalıştırmaktan biraz farklı olacaktır. Sonuç kümesinin yinelenmeler içerebileceğini düşünmüyorsanız (matematiksel olarak konuşmanın bir küme olmadığı anlamına gelir), unionAll yerine union kullanılması performansı artıracaktır.

2
Dmitry Rekun