我正在制作一个web应用程序来创建锦标赛,正如我在这个项目过程中学到的PHP一样,所以我的技能可能不是最好的。结合两个mysql组查询
我在我的数据库day2_semifinal
或day2_additional
中有一个标识符,它基本上标识了半决赛的类型。
所以我的第一个查询是:
$numberquery = mysql_query("
SELECT *
FROM tourneyplayers
INNER JOIN results
on (resultid=r_id)
INNER JOIN players
ON (p_id=playerid)
INNER JOIN tourneys
on (T_Id=tourneyid)
WHERE tourneyid='$tourneyid' and
in_day2 = 1 and
day2_semifinal IS NOT NULL
GROUP BY day2_semifinal
ORDER BY agegroupid",$connection);
这将让我所有的半决赛组,我会在它们之间迭代和查询组中的所有玩家:
$semigroup = $group['day2_semifinal'];
$playerQuery = mysql_query("
SELECT *
FROM tourneyplayers
INNER JOIN results
on (r_id=resultid)
INNER JOIN players
on (p_id=playerid)
WHERE tourneyid='$tourneyid' AND
day2_semifinal = '$semigroup' and
in_day2 = 1
ORDER BY day2startplace",$connection);
现在我后创建了表格并回应了所有来自玩家查询的数据day2_semifinal
,我运行了另一个查询:
$numberquery = mysql_query("SELECT * FROM tourneyplayers INNER JOIN results on (resultid=r_id) INNER JOIN players ON (p_id=playerid) WHERE tourneyid='$tourneyid' and in_day2 = 1 and day2_additional_nosemi IS NOT NULL AND day2_additional_nosemi <> 0 GROUP BY day2_additional_nosemi ORDER BY agegroupid",$connection);
这与第一个非常相似,唯一不同的是day2_semifinal
标识符已更改为day2_additional
。该查询后,我会再,遍历day2_additional_nosemi
组和查询他们的内部玩家:
$additionalgroup = $group['day2_additional_nosemi'];
$playerQuery = mysql_query("SELECT * FROM tourneyplayers INNER JOIN results on (r_id=resultid) INNER JOIN players on (p_id=playerid) WHERE tourneyid='$tourneyid' AND day2_additional_nosemi = '$additionalgroup' and in_day2 = 1 ORDER BY day2startplace",$connection);
现在这个工作,但这个由agegroupid
创建了排序问题,因为第一个查询他们的订单,但只适用于day2_semifinal
(并且我希望day2_additional
玩家与day2_semifinal
一起订购)。如果我运行另一个查询,以前的数据已被回显,并排序不正确。我如何连接两个$numberquery
查询以便选择后面的玩家呢?
删除mysql_ *。现在为了安全起见,从php7中删除,使用mysqli_或pdo –
我将在下一个项目中继续讨论这个问题,我目前仍在学习,而且我正在修改的区域不是公开的。 – Banana
您的第一个查询无效,因为您在使用“GROUP BY”时选择所有列。你究竟在第一个查询中想要聚合什么? –