根据变量显示行数

问题描述 投票:-1回答:1

我有两个表,SpeciesHuntBoats包含Boats,Make,Skipper等和SpeciesHunt的详细信息,这是由船长提交捕获报告表格及其捕捞渔获物的详细信息而生成的。 showboats.php显示5列,年份,船名,制作,船长,物种数量。

对于最后一列,我想要显示SpeciesHunt中出现BoatName的行数(给出一个谁输入了最多捕获量的排行榜)。这是我能够得到的不幸,任何帮助非常感谢!

<body>

<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Count Rows
$result = mysqli_query($conn, "SELECT * FROM SpeciesHunt");
$num_rows = mysqli_num_rows($result);
// Check row count of entire table works
echo "$num_rows Rows\n";


$sql = "SELECT Year, BoatName, BoatMake, Skipper FROM SpeciesHuntBoats";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table><tr><th>Hunt Year</th><th>Boat Name</th><th>Boat Make</th><th>Skipper</th><th>Number Of Species</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["Year"]. "</td><td>" . $row["BoatName"]. "</td><td>" . $row["BoatMake"]. "</td><td>" . $row["Skipper"]. "</td><td>

$num_rows</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}

$conn->close();
?>

</body>

表结构:SpeciesHunt

SpeciesHuntBoats

php mysql
1个回答
0
投票

对于你的桌子,你应该更好地利用船和狩猎之间的关系

你应该研究一下sql关系。

目前,您基本上将船名,船舶和船长保存两次。

这是对结构的更好建议:

船:

  • name
  • 使
  • 船长
  • 照片

狩猎:

  • DateCaught
  • 钓鱼者
  • 种类
  • 笔记
  • BoatId(这将是某船记录的参考)

在这种情况下,您可以执行连接两个表的SQL查询

select Year, Name, Make, Skipper, count(hunts.id) from boats 
join hunts on boats.id = hunts.BoatId
group by Year, Name, Make, Skipper;

这将返回的是具有狩猎记录总数的某艘船。

你可以研究的东西:

  • MySQL关系
  • MySQL加入
  • MySQL聚合
© www.soinside.com 2019 - 2024. All rights reserved.