SQL / PDO 查询优化

SQL / PDO Query Optimisation


仍在思考 SQL.

目前我正在使用 2 个 PDO 查询。我尝试做的范围如下:
- 首先我需要将 name 转换为 table ID
- 然后使用此 ID,获取 companyID 与检索到的 table ID

匹配的人

所以目前我有:(PS 我知道有 PDO 速记,我只是为了在所有 php 脚本之间保持一致,我没有在这个项目 atm 中使用它们)

$prep = $DBH->prepare("SELECT Company.id FROM Company WHERE Company.name = :companyName LIMIT 1");
$prep->bindParam(":companyName", $_GET['companyName']);
$prep->execute();
$data = $prep->fetch();
$companyID = $data['id'];

$prep = $DBH->prepare("SELECT People.* FROM People WHERE People.companyID = :companyID");
$prep->bindParam(":companyID",$companyID);
$prep->execute();

我的印象是我可以使用某种 JOIN - 可能是 INNER JOIN 能够在单个查询中执行此操作。

这可能吗? - 如果是,将不胜感激!

谢谢!

这是我的一个特殊偏见,但我喜欢使用子select。这应该有效:

SELECT People.* FROM People 
  WHERE People.companyID  IN 
     (SELECT Company.id FROM Company WHERE Company.name = :companyName LIMIT 1)

但这也可行:

-- Aliasing is optional
SELECT P.* FROM People AS P
  JOIN Company C ON (P.companyID = c.id)
  WHERE C.name = :companyName

是的,这是SQL102。

您需要这个查询:

 SELECT People.* 
   FROM Company 
   JOIN People ON People.companyID = Company.id
  WHERE Company.name = :companyName
  ORDER BY People.Surname, People.Givename

我在猜测 ORDER BY 子句中的列名。但这将在单个查询中产生与 :companyName 关联的所有人员。这是有效的。 SQL为此而生。