Выборка из таблиц бызы данных делается с помощью цепочек запросов (query chaining) или с помощью строки запроса.

Сначала получаем объект для работы с базой

$db = JFactory::getDBO();

И затем, создаем объект запросов

$query = $db->getQuery(true);

getQuery имеет один параметр, по умолчанию, $new=false. Если задаем true, то получаем новый объект запроса.

Формировать запрос можно или с помощью цепочек, вот так

$query
->select()
->from()
->where()
->order();

либо по отдельности

$query->select();
$query->from();
$query->where();
$query->order();

Еще методы объекта запроса

$query->from();
$query->join();
$query->setLimit('10');

Это еще не все методы объекта запросов, более полный список можно посмотреть здесь >> https://api.joomla.org/cms-3/classes/JDatabaseQuery.html

Для формирования запроса удобно использовать вспомогательные функции для добавления кавычек и экранирования, например

для добавления обратных кавычек к полям таблицы и именам таблиц и баз

$db->quoteName('#__content')

и для обрамления текста в кавычки и экранирования кавычек в тексте

$db->quote($value)

quoteName и quote могут принимать в качестве аргумента как строку так и массив и возвращают соответственно строку или массив

API JDatabase >> https://api.joomla.org/cms-2.5/classes/JDatabase.html

Пример запроса к одной таблице

$query
->select($db->quoteName(array('user_id', 'profile_key', 'profile_value', 'ordering')))
->from($db->quoteName('#__user_profiles'))
->setLimit('10');

Пример запроса к нескольким таблицам

// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select all articles for users who have a username which starts with 'a'.
// Order it by the created date.
// Note by putting 'a' as a second parameter will generate `#__content` AS `a`
$query
->select($db->quoteName(array('a.*', 'b.username', 'b.name')))
->from($db->quoteName('#__content', 'a'))
->join('INNER', $db->quoteName('#__users', 'b') . ' ON (' . $db->quoteName('a.created_by') . ' = ' . $db->quoteName('b.id') . ')')
->where($db->quoteName('b.username') . ' LIKE \'a%\'')
->order($db->quoteName('a.created') . ' DESC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$results = $db->loadObjectList();

loadObjectList - результат запроса - массив объектов,

Объект JDatabase содержит и другие интересные методы для получения результата запроса >> JDatabase

Пример запроса к больше чем двум таблицам

$query
->select($db->quoteName(array('a.*', 'b.username', 'b.name', 'c.*', 'd.*')))
->from($db->quoteName('#__content', 'a'))
->join('INNER', $db->quoteName('#__users', 'b') . ' ON (' . $db->quoteName('a.created_by') . ' = ' . $db->quoteName('b.id') . ')')
->join('LEFT', $db->quoteName('#__user_profiles', 'c') . ' ON (' . $db->quoteName('b.id') . ' = ' . $db->quoteName('c.user_id') . ')')
->join('RIGHT', $db->quoteName('#__categories', 'd') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('d.id') . ')')
->where($db->quoteName('b.username') . ' LIKE \'a%\'')
->order($db->quoteName('a.created') . ' DESC');

Вот достаточно подробная статья о том как делается выборка из одной или нескольких таблиц в Joomla >> https://docs.joomla.org/Selecting_data_using_JDatabase