php pdo奇怪的行结果

时间:2013-06-10 06:03:28

标签: php mysql pdo

我有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'时,它会返回多个具有相同公司名称的结果计数/行。

我的代码有问题吗?感谢

2 个答案:

答案 0 :(得分:1)

因为您加入了,所以您将重复同一家公司,因为它与员工或机器相关联。如果您只想计算公司数量,可以使用

SELECT COUNT(DISTINCT company.ID) FROM ...

答案 1 :(得分:1)

这就是加入的方式。

基本上你会将你加入的每张桌子上的行数相乘,所以你的情况就是1 * 2 * 3.

您可以在我对此sqlfiddle上应用WHERE语句之前调查结果的外观。