
[英]Get number of positive votes from total of votes and result of all votes (+/-)
[英]optimize query: get all votes from user's item
我这样做是因为我很难从两个表中获得结果...
基本上,首先我得到与用户相对应的所有id项目,然后计算每个项目的等级。
但是,有两种不同类型的对象项,因此我执行了2次:向您展示:
function votos_usuario($id){
// $previa = "SELECT id FROM preguntas WHERE id_usuario = '$id'";
// $r_previo = mysql_query($previa);
// $ids_p = '0, ';
// while($items_previos = mysql_fetch_array($r_previo)){
// $ids_p .= $items_previos['id'].", ";
// //echo "ids pregunta usuario: ".$items_previos['id']."<br>";
// }
// $ids = substr($ids_p,0,-2);
// //echo $ids;
//
// $consulta = "SELECT valor FROM votos_pregunta WHERE id_pregunta IN ( $ids )";
// //echo $consulta;
//
// $resultado = mysql_query($consulta);
// $votos_preguntas = 0;
// while($voto = mysql_fetch_array($resultado)){
// $votos_preguntas = $votos_preguntas + $voto['valor'];
// }
$votos_preguntas= 0;
$votos_preguntas = mysql_query("SELECT SUM(valor) FROM votos_pregunta WHERE id_pregunta IN (SELECT id FROM preguntas WHERE id_usuario = '$id')");
$previa_r = "SELECT id FROM recetas WHERE id_usuario = '$id'";
$r_previo_r = mysql_query($previa_r);
$ids_r = '0, ';
while($items_previos_r = mysql_fetch_array($r_previo_r)){
$ids_r .= $items_previos_r['id'].", ";
//echo "ids pregunta usuario: ".$items_previos['id']."<br>";
}
$ids = substr($ids_r,0,-2);
$consulta_b = "SELECT valor FROM votos_receta WHERE id_receta IN ( $ids )";
//echo $consulta;
$resultado_b = mysql_query($consulta_b);
$votos_recetas = 0;
while($voto_r = mysql_fetch_array($resultado_b)){
$votos_recetas = $votos_recetas + $voto_r['valor'];
}
$total = $votos_preguntas + $votos_recetas;
return $total;
}
如您所愿,这是两个。.O(n ^ 2)
想要思考吗?
谢谢!
您可以同时执行以下操作:
$votos_preguntas = mysql_query("SELECT SUM(valor) FROM votos_pregunta WHERE id_pregunta IN (SELECT id FROM preguntas WHERE id_usuario = '$id')");
如果votos_pregunta
和votos_rectas
具有相同的结构,那么我只能将其作为一个表,并带有一个新添加的type
列,该列可以是rectas或preguntas。 然后,您只需要为$total
做一个声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.