1

我使用下面的代码从 mysql 数据库中检索数据。这给了我一个结果,我无法理解它是如何生成的逻辑。我想要的是仅在contribution_page_id 为1 且货币为RUB 的情况下从数据库中获取total_amount 的总和。我怎样才能做到这一点?

谢谢。

<?php
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select($db->quoteName(array('total_amount')));
$query->from($db->quoteName('civicrm_contribution'));
$query->where($db->quoteName('contribution_page_id') . ' = '. $db->quote('1'));
$query->where($db->quoteName('currency') . ' = '. $db->quote('RUB'));

$db->setQuery($query);

$results = $db->loadResult();
echo $results;
?>;
4

2 回答 2

0

Joomla 在查询中定义数据库表时使用前缀。您需要#__在表名之前使用,如下所示:

$query->from($db->quoteName('#__civicrm_contribution'));
于 2013-09-12T10:46:55.860 回答
0

您的查询应使用以下sum()功能:

$query->select('sum('.$db->quoteName('total_amount').')');
$query->from($db->quoteName('civicrm_contribution'));
$query->where($db->quoteName('contribution_page_id') . ' = '. $db->quote('1'));
$query->where($db->quoteName('currency') . ' = '. $db->quote('RUB'));

但是,如果您想要一个包含每种货币总和的表(每行一个),您将使用group bysql 子句:

$query->select($db->quoteName('currency'));
$query->select('sum('.$db->quoteName('total_amount').')');
$query->from($db->quoteName('civicrm_contribution'));
$query->where($db->quoteName('contribution_page_id') . ' = '. $db->quote('1'));
$query->where($db->quoteName('currency') . ' = '. $db->quote('RUB'));
$query->group($db->quoteName('currency'));
于 2013-09-13T07:13:26.977 回答