-1

我有 3 张桌子。

PK table
- company

FK table
- staff
- machines

Table Data:

Company:
ID | NAME
1  | FLY RESORTS

Staff:
ID(fk) | NAME
1      | John Doe
1      | Johny Doe

Machines:
ID(fk) | NAME
1      | Bulldozer
1      | Helicopter
1      | Lorry

我写了 PDO 选择计数代码:

    $keyword = "%" . $_GET["keyword"] . "%" ;


    $sql = "SELECT count(*) FROM `company` INNER JOIN staff ON staff.ID = company.ID INNER JOIN machines ON machines.ID = company.ID WHERE (comp.name like '$keyword' or machines.name like '$keyword' or staff.name like '$keyword')"; 
    $result = $conn->prepare($sql); 
    $result->execute(); 
    $numrows = $result->fetchColumn();

当我将 设置为$keyword'fly',它会返回具有相同公司名称的多个结果计数/行。

我的代码有问题吗?谢谢

4

2 回答 2

1

因为你加入,你会得到同一家公司重复多次,它链接到一个员工或一台机器。如果你只想计算公司,你可以使用

SELECT COUNT(DISTINCT company.ID) FROM ...
于 2013-06-10T06:08:43.527 回答
1

这就是连接的工作方式。

基本上,您将乘以您加入的每个表上的行数,因此在您的情况下为 1 * 2 * 3。

在我制作的这个sqlfiddle上应用 WHERE 语句之前,您可以调查结果的外观。

于 2013-06-10T06:14:49.080 回答