我有一个如下所示的数据库:
Owner Vehicle Color Peter Car Black Peter Bike Black Peter Bike Red Peter Bike Black Marc Car Black Marc Car Black Marc Bike Red Marc Bike Red
我需要的是一个遍历整个数据库的查询,最终为我提供了一个概述,例如:
因此,对于每个所有者,我希望获得车辆+颜色实例的计数(和名称)。
对于具有900,000行的数据库,PHP的最佳方法是什么?我有一个包含所有者姓名的清单,但我如何有效地计算车辆+颜色的实例?
答案 0 :(得分:0)
您需要使用COUNT
和GROUP BY
来汇总每行。由于您想知道所有者拥有的每种车辆和颜色的数量,因此您需要按以下三列进行分组:
SELECT owner, vehicle, color, COUNT(*) as vehicle_count
FROM mytable
GROUP BY owner, vehicle, color
结果:
+-------+---------+-------+---------------+
| owner | vehicle | color | vehicle_count |
+-------+---------+-------+---------------+
| Marc | Bike | Red | 2 |
| Marc | Car | Black | 2 |
| Peter | Bike | Black | 2 |
| Peter | Bike | Red | 1 |
| Peter | Car | Black | 1 |
+-------+---------+-------+---------------+
执行查询后,这些行可以通过PHP代码读出,如
echo $row["owner"]." has ".$["vehicle_count"]." ".$vehicles;
或已处理,但您想要提供信息。
答案 1 :(得分:-1)
你可以使用以下mysqli代码.. 不要忘记在$ get_owner和$ get_num中的连接和表名中更改"用户名","密码","数据库"
搜索所有者并显示结果。
代码: -
<form action="" method="post">
<input type="text" placeholder="Owner name" name="owner" />
<input type="submit" value="search" name="search"/>
</form>
<?php
$conn = mysqli_connect ("localhost", "username", "password", "database");
if (mysqli_connect_errno()) {
echo "Error ".mysqli_connect_errno();
}
if(isset($_POST['search'])) {
$owner = $_POST['owner'];
$get_owner = "SELECT * FROM `tablename` WHERE Owner='$owner'";
$run = mysqli_query($conn, $get_owner);
while ($row = mysqli_fetch_array($run)) {
$vehical = $row['Vehicle'];
$color = $row['Color'];
$get_num = "SELECT `tablename` FROM `efgh` WHERE Vehicle='$vehical' and Color='$color'";
$run_num = mysqli_query($conn ,$get_num);
$chekc = mysqli_num_rows($run_num);
echo $owner.' has '.$chekc.' '.$color.' '.$vehical.'<br>';
}
}
?>