我试图将以下查询合并为一个,如果可能的话,为了有效性。
表单实际上是测验的问题形式,它有$ quiz_id和$ user_id。这个问题附有一个外键,它是clue_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();
答案 0 :(得分:0)
如果您不打算在不久的将来使用其他RDBMS,则根本不需要使用$ query对象。
你可以拥有:
$db =& JFactory::getDbo();
$sql = "SELECT ... FROM ... WHERE ...";
$db->setQuery($sql);
$arr = $db->loadAssocList();