sqlite3查询多个条件php

时间:2016-02-02 18:11:36

标签: php sqlite

我有一个如下所示的数据库:

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

我需要的是一个遍历整个数据库的查询,最终为我提供了一个概述,例如:

  • 彼得有一辆黑色轿车
  • 彼得有2辆黑色自行车
  • 彼得有一辆红色自行车
  • Marc有2辆黑色汽车
  • Marc有2辆红色自行车

因此,对于每个所有者,我希望获得车辆+颜色实例的计数(和名称)。

对于具有900,000行的数据库,PHP的最佳方法是什么?我有一个包含所有者姓名的清单,但我如何有效地计算车辆+颜色的实例?

2 个答案:

答案 0 :(得分:0)

您需要使用COUNTGROUP 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>';
  }
}

 ?>