【发布时间】:2018-03-11 20:41:01
【问题描述】:
我创建了一个基于 Olympics 的小型数据库,用于运行一些 sql 查询。我正在尝试生成一个表格,显示每个国家/地区的名称以及来自这些国家/地区的运动员获得的金牌、银牌和铜牌总数。这是我的关系模型视图的屏幕截图:
这是我正在尝试运行的查询:
<h1>Olympics Database</h1>
<h3>Summary Information</h3>
<h4>Number of Olympic Athletes from United Kingdom</h4>
<?php
$conn = mysqli_connect('localhost', '#####', '#####') or die ('Could not connect:' . mysqli_error($conn));
echo 'Successfully Connected. <br/>';
mysqli_select_db($conn, '#####') or die('Database will not open');
echo 'Database Connected. <br/> <br/>';
$query2 = 'SELECT CountryAbbrev, (SELECT COUNT(CountryAbbrev) FROM athlete WHERE MedalID = 401 AND ath.CountryAbbrev = athlete.CountryAbbrev) AS Gold, (SELECT COUNT(CountryAbbrev) FROM athlete WHERE MedalID = 402 AND ath.CountryAbbrev = athlete.CountryAbbrev) AS Silver, (SELECT COUNT(CountryAbbrev) FROM athlete WHERE MedalID = 403 AND ath.CountryAbbrev = athlete.CountryAbbrev) AS Bronze FROM athlete AS ath';
$result2 = mysqli_query($conn, $query2) or die ('Invalid Query');
echo'<table><tr><th>Country Name</th><th>Gold</th><th>Silver</th><th>Bronze</th></tr>';
$row = mysqli_fetch_row($result2);
echo'<tr><td>' .$row[0].'</td><td>' .$row[1].'</td><td>' .$row[2].'</td><td>' .$row[3].'</td></tr>';
echo'</table>';
mysqli_close($conn);
?>
我得到的只是无效的查询。根据我的关系模型视图,谁能帮我弄清楚如何在一张桌子上显示每个国家获得的金牌、银牌和铜牌的总数?
【问题讨论】:
-
你需要加入奖牌和运动员 LEFT JOIN Medal ON athlet.MedalID= Medal。奖牌ID
-
请提供样本数据和预期结果。谢谢
-
您还需要一个 GROUP BY 子句,以及 SELECT 中的奖牌 tyoe
-
SUM(MedalID)会将 ID 值相加而不计算在内。 -
在您的
or die上,您真的很想查看mysqli_error以了解实际问题是什么,而不是猜测。