1

以下のコードを使用して、mysql データベースからデータを取得します。これにより、単一の結果が得られますが、それがどのように生成されるかのロジックを理解できません。私が代わりに望むのは、contribution_page_id が 1 で currency が RUB であるという条件でのみ、データベースから total_amount の SUM を取得することです。どうすればこれを達成できますか?

ありがとう。

<?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

クエリには次の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'));

ただし、各通貨の合計 (1 行に 1 つ) を含むテーブルが必要な場合はgroup by、sql の句を使用します。

$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 に答える