我正在利用数据库查询在Joomla 3x中创建一个动态下拉列表,但无法在同一选项(FieldValue-FieldValue-FieldValue)内将结果分组。每个结果都将作为其自己的选项返回。
我要完成的是: 在表内部commit_values中-如果FieldName等于CDR-Number,501c3和数量-对于FormId等于18的每个SubmissionId,返回每个FieldName的FieldValue。 我当前的代码:
//<code>
$items = array();
$db = JFactory::getDbo();
$items[] = "| - Select Charity Details - [c]";
$query = $db->getQuery(true);
$query
->select(array('a.FieldValue', 'a.FieldName', 'a.SubmissionId', 'a.FormId'))
->from($db->quoteName('#__rsform_submission_values', 'a'))
->join('INNER', $db->quoteName('#__rsform_submissions', 'b') . ' ON (' . $db->quoteName('a.SubmissionId') . ' = ' . $db->quoteName('b.SubmissionId') . ')')
->where($db->quoteName('a.FormID') . ' = 18 ')
->where($db->quoteName('a.FieldName') . ' IN ("amount" , "501c3", "CDR-Number")')
->order($db->quoteName('a.SubmissionId') . ' DESC');
$db->setQuery($query);
$query->dump();
$results = $db->loadObjectList();
foreach($results as $row) {
$value = $row->FieldValue;
$label = $row->FieldValue;
$items[] = $value.'|'.$label;
}
return implode("\n", $items);
//</code>
我需要返回CDR-001:One80位-$ 1,000.00和CDR-002:三月一毛钱-$ 2,000.00的结果
答案 0 :(得分:1)
我建议旋转您的表,然后将其串联成一个单列结果集。
我也没有令人信服的理由加入#__rsform_submissions
,因此已将其从代码段中删除。
代码:(在本地测试)
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select("CONCAT(
MAX(CASE WHEN FieldName = 'CDR-Number' THEN FieldValue ELSE NULL END),
': ',
MAX(CASE WHEN FieldName = '501c3' THEN FieldValue ELSE NULL END),
' - ',
MAX(CASE WHEN FieldName = 'amount' THEN FieldValue ELSE NULL END)
)")
->from("#__rsform_submission_values")
->where("FormID = 18")
->where("FieldName IN ('CDR-Number', '501c3', 'amount')")
->group("SubmissionId DESC");
// echo $query->dump(); // if you want to see the rendered query
$db->setQuery($query);
echo "<pre>";
try {
var_export($db->loadColumn());
} catch (Exception $e) {
JFactory::getApplication()->enqueueMessage("Select Query Syntax Error " . $e->getMessage(), 'error');
// use $e->getMessage() only while debug and page is not viewable by public as a matter of security
}
输出:
array (
0 => 'CDR-002: March of Dimes -$2,000.00',
1 => 'CDR-001: One80 Place - $1,000.00',
)
以下是JoomlaStackExchange的最新答案,我在其中建议/解释了枢轴技术:https://joomla.stackexchange.com/a/23921/12352
如果您将您的问题发布在JoomlaStackExchange上,我会早点找到它的,并且可以在昨天向您提供此解决方案。以后,请在此处发布您的Joomla问题。