SQL UNION'ları oluşturmak için db_query () işlevini kullandım ve daha sonra theme () işlevini kullanan çağrı cihazları da dahil olmak üzere bir tablo düzenine dönüştürdüm.
Kullanıcı için varsayılan görünümler gibi görünüyor. Diğer yararı da sorguyu çok fazla optimize edebilmemdi. "Arkadaşımın faaliyetlerini" gösteriyorum ve bunun için görünümler kullanırsanız arkadaşlarınızın bir listesini oluşturacak ve 50'den fazla veya 100 kayda sahipseniz çok yavaş olan bir SQL "IN" deyiminde kullanacaksınız.
Bu arkadaş listesini yalnızca son x günde siteye giriş yapmış olanlarla daraltabilirim.
Bu bir kod örneğidir:
// Two queries are required (friendships can be represented in 2 ways in the
// same table). No point making two db calls though so a UNION it is.
// Build up the first query.
$query = db_select('flag_friend', 'f')
->condition('f.uid', $account->uid)
->condition('u.login', $timestamp, '>');
$query->addExpression('f.friend_uid', 'uid');
$query->innerJoin('users', 'u', 'u.uid = f.friend_uid');
// Build up the second query.
$query2 = db_select('flag_friend', 'f')
->condition('f.friend_uid', $account->uid)
->condition('u.login', $timestamp, '>');
$query2->addExpression('f.uid', 'uid');
$query2->innerJoin('users', 'u', 'u.uid = f.uid');
// Return the results of the UNIONed queries.
return $query->union($query2)->execute()->fetchCol();