gpt4 book ai didi

sql - MySQL 查询 : Join and Group

转载 作者:行者123 更新时间:2023-11-29 06:23:45 26 4
gpt4 key购买 nike

我有一个简单的竞赛报名网络表单。每位参赛者都可以勾选一个方框,以获得 20 个奖品中的一个。提交表单后,会在“contestants”表中创建一行。对于他们检查的每个奖项,都会在“条目”表中创建一行。

我正在尝试制作一个“结果”页面,其中列出所有奖品名称,并在每个奖品名称下方列出所有希望有资格赢得该奖品的参赛者。没有参赛者报名的奖品将不会在其姓名下方列出任何参赛者。

如何编写高效的 MySQL 查询来轻松生成这样的页面(使用 PHP)?

表格

参赛者

  • 编号
  • 姓名
  • 电子邮件
  • 地址
  • 城市
  • 状态

条目

  • 编号
  • contestant_id
  • prize_id

奖品

  • 编号
  • 姓名
  • 描述

最佳答案

SELECT p.name AS prize, c.name AS contestant FROM contestants c
INNER JOIN entries e ON c.id = e.contestant_id
INNER JOIN prizes p ON e.prize_id = p.id
ORDER BY p.id

它会给你结果:

prize 1 | contestant 1.1
prize 1 | contestant 1.2
...
prize 1 | contestant 1.n
prize 2 | contestant 2.1
prize 2 | contestant 2.2
...
prize 2 | contestant 2.n
....
prize m | contestant m.n

如果你想要这样的列表:

prize 1
contestant 1.1
contestant 1.2
...
contestant 1.n
prize 2
contestant 2.1
contestant 2.2
...
contestant 2.n

您必须用 PHP 格式化结果。

它可以是这样的:

$old_prize = '';

$result = mysql_query(<above query>);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

if($old_prize != $row["prize"]) {
$old_prize = $row["prize"];
echo "Prize: ".$row["prize"].'<br />';
}

echo $row["contestant"].'<br />;
}

关于sql - MySQL 查询 : Join and Group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com