php - Joomla 中的 Mysql : Efficient multiple selects in one query and possible evaluation

标签 php mysql joomla

为了提高效率,我正在尝试将以下查询合并为一个(如果可能)。

这个表单实际上是测验的问题表单,它有一个 $quiz_id 和一个 $user_id。这个问题附加了一个外键,即clue_id。

  1. 在第一个查询中,我选择该特定测验的线索 ID。
  2. 然后在第二个查询中,我询问有多少测验共享相同的线索_id?将其返回为 $count_quiizes_with_this_clue。
  3. 在最后一个中,我计算了已回答并存储在单独的多对多关系表 (fab_ans_quest) 中的测验数量。该表只有 user_id 和已正确回答的 quiz_id。

因此,我想比较点 2 和点 3 的计数。如果相等,那么它应该执行某些操作。

现在,我试图通过在一个查询中使上述序列更加高效。更好的是,如果它甚至可以评估结果,得出正确或错误的结果,那就太好了!

谢谢!

$db =& JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select($db->quoteName('clue_id'))
    ->from($db->quoteName('fab_puzzles'))
    ->where($db->quoteName('id') . ' = '. $db->quote($quiz_id));
$db->setQuery($query);
$clue_id = $db->loadResult();

$query = $db->getQuery(true);
$query
    ->select('COUNT(*)')
    ->from($db->quoteName('fab_puzzles'))
    ->where($db->quoteName('clue_id') . ' = '. $db->quote($clue_id));
$db->setQuery($query);
$count_quizes_with_this_clue = $db->loadResult();

$query = $db->getQuery(true);
$query
    ->select('COUNT(*)')
    ->from($db->quoteName('fab_puzzles', 'a'))
    ->join('INNER', $db->quoteName('fab_ans_quest', 'b') . ' ON (' . $db->quoteName('a.id') . ' = ' . $db->quoteName('b.quiz_id') . ')')
    ->where($db->quoteName('a.clue_id') . ' = '. $db->quote($clue_id) . ' AND ' . $db->quoteName('b.user_id') . ' = '. $db->quote($user_id));
$db->setQuery($query);
$count_completed_quizes_with_this_clue = $db->loadResult();

最佳答案

如果您不打算在不久的将来使用不同的 RDBMS,则根本不需要使用 $query 对象。

你可以拥有:

$db =& JFactory::getDbo();
$sql = "SELECT ... FROM ... WHERE ...";
$db->setQuery($sql);
$arr = $db->loadAssocList();

关于php - Joomla 中的 Mysql : Efficient multiple selects in one query and possible evaluation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548031/

相关文章:

javascript - 使用 javascript 连接两个数组

mysql - 如何从 MySQL 5.6 中 json_extract 不可用的 JSON 字段中进行选择?

joomla - 为什么是 Joomla! K2不支持中文搜索?

mysql - 如何将一个表中两列的总和加在一起,同时我会为两者都出现

php - MySQL 在第 1 行错误的 '' 附近使用正确的语法

php - 了解 jdoc :include in Joomla

url - 在 Joomla 上打开 SEO 友好的 URL 使所有导航显示主页

php - 错误 1366 (HY000) : Incorrect string value: '\xF0\x9F\x98\x9C' for column 'comment' at row 1

php - 将产品详细信息插入 'product' 表,并将产品图像插入 'image' 表

php - 如何使用 anchor 标记打开存储在 MySQL 表中的 PDF 文件