"AND `pool_question`.`question` NOT IN (SELECT `question` FROM `roundquestion` INNER JOIN `round` ON (`round`.`idround` = `roundquestion`.`round`) WHERE `duel`=?)"+
"AND `question`.`published`=1 "+
"AND (`question`.`university` IS NULL OR `question`.`university` = ALL (SELECT `university` FROM `user` WHERE `iduser`=? OR `iduser`=?))"+
"GROUP BY `pool_question`.`question`"+
"ORDER BY POW(COUNT(IF(`useranswer`.`user`=? AND RAND()<.9, 1, NULL)), 2) + POW(COUNT(IF(`useranswer`.`user`=? AND RAND()<.9, 1, NULL)), 2)"+
pools,errPools:=db.Query("SELECT `idpool`, `name`, `shortform`, `description`,`image` FROM `pool` WHERE `idpool` IN (SELECT `pool` FROM `pool_question` GROUP BY `pool` HAVING COUNT(`question`) >= ?) AND `idpool` IN (SELECT DISTINCT `pool` FROM `user_pool` WHERE `user`=? OR `user`=? GROUP BY `pool` HAVING COUNT(DISTINCT `user`)=2)",QuestionsPerRound,userID,otherUserID)
pools,errPools:=db.Query("SELECT `idpool`, `name`, `shortform`, `description`,`image` FROM `pool` WHERE `idpool` IN (SELECT `pool` FROM `pool_question` "+
"INNER JOIN `question` ON (`question`.`idquestion`=`pool_question`.`question`) "+
"WHERE `published`=1 AND (`university` IS NULL OR `university` = ALL (SELECT `university` FROM `user` WHERE `iduser`=? OR `iduser`=?)) "+
"AND `question` NOT IN (SELECT `question` FROM `roundquestion` INNER JOIN `round` ON (`idround`=`roundquestion`.`round`) WHERE `duel`=?) "+
"GROUP BY `pool` HAVING COUNT(DISTINCT `question`) >= ?) "+
"AND `idpool` IN (SELECT DISTINCT `pool` FROM `user_pool` WHERE `user`=? OR `user`=? GROUP BY `pool` HAVING COUNT(DISTINCT `user`)=2)",userID,otherUserID,duelID,QuestionsPerRound,userID,otherUserID)
queryString:="SELECT `idpool`, `name`, `shortform`, `description`,`image`, `idpool` IN (SELECT DISTINCT pool from user_pool WHERE user=?) AS selected FROM `pool` WHERE `idpool` IN (SELECT `pool` FROM `pool_question` GROUP BY `pool` HAVING COUNT(DISTINCT `question`) >= ?)"
queryString:="SELECT `idpool`, `name`, `shortform`, `description`,`image`, `idpool` IN (SELECT DISTINCT pool from user_pool WHERE user=?) AS selected FROM `pool` WHERE `idpool` IN (SELECT `pool` FROM `pool_question` INNER JOIN `question` ON (`idquestion`=`pool_question`.`question`) WHERE `published`=1 AND (`university` IS NULL OR `university`=(SELECT `university` FROM `user` WHERE `iduser`=?)) GROUP BY `pool` HAVING COUNT(DISTINCT `question`) >= ?)"
returnnil,fmt.Errorf("failed to get database instance: %v",err)
}
// Fetch pools from database
rows,err:=db.Query("SELECT DISTINCT `pool` FROM `user_pool` WHERE `user`=? AND `pool` IN (SELECT `pool` FROM `pool_question` GROUP BY `pool` HAVING COUNT(DISTINCT `question`) >= ?)",userID,QuestionsPerRound)
rows,err:=db.Query("SELECT DISTINCT `pool` FROM `user_pool` WHERE `user`=? AND `pool` IN (SELECT `pool` FROM `pool_question` INNER JOIN `question` ON (`idquestion`=`pool_question`.`question`) WHERE `published`=1 AND (`university` IS NULL OR `university`= ALL (SELECT `university` FROM `user` WHERE `iduser`=? OR `iduser`=?)) GROUP BY `pool` HAVING COUNT(DISTINCT `question`) >= ?)",userID,userID,secondaryUser,QuestionsPerRound)