你如何写一个' not in'在Joomla 2.5 SQL中选择语句?

时间:2014-07-16 20:58:56

标签: joomla

请在下面的查询中解释如何在Joomla中编写注释掉的行。

我无法使用documentation来解决这个问题。只有最简单的查询。

function getUsersFromDatabase()
{
    $db = JFactory::getDBO();   
    $query = $db -> getQuery(true);     
    $query
    ->select($db->quoteName(array('u.id', 'u.name', 'u.username', 'u.email')))
    ->from($db->quoteName('#__users', 'u'))         

    //->where($db->quoteName('u.id') . ' not in (select m.user_id from ' . $db->quoteName('#__user_usergroup_map', 'm') .' where ' . $db->quoteName('m.group_id') . ' in (4,19))') //no admins or superusers        

    ->order($db->quoteName('u.name') . ' ASC');     
    $db ->setQuery($query);
    $result = $db -> loadObjectList();  
    return $result;         
}

2 个答案:

答案 0 :(得分:1)

您不必使用Joomla的限制性SQL查询平台来查询您的数据库。您可以执行以下操作:

$db = JFactory::getDBO();
$sql = "YOUR SQL QUERY";
$db->setQuery($sql);
$result = $db->loadAssocList();

主要扩展,包括K2,使用上面简单的方法(他们不使用Joomla的限制性SQL)。

答案 1 :(得分:0)

试试这个,

还有一些替代选项,如下所示,

$query
    ->select('*')
    ->from('products')
    ->where('category = ' . $db->q('catA'))
    ;
$q2
    ->select('*')
    ->from('products')
    ->where('category = ' . $db->q('catB'))
    ;
$query->union($q2);
$products = $db->setQuery($query)->loadObjectList();

使用union使用Joomla3.x可以提升性能。它对Joomla older versions有一些限制。

希望有所帮助......