在确定它们之间的关系之前,确定是否存在两条MySQL记录

时间:2014-02-06 02:53:02

标签: php jquery mysql sql

想象一下,你有一张人员,公共汽车和一张映射表。在给定一组人员的情况下,您希望确定谁在给定的公交车上。因此,您创建一个PHP页面以返回一个简单的人员列表。您还希望页面健壮,因此您希望返回从DB或其他故障反映的任何错误。此外,PDO用于使网站灵活。

为了减少数据库查询(假设查询数据库是最昂贵的部分,特别是如果数据库获得大量和/或大量访问者),您可能希望将对数据库的查询减少到绝对最小值。

在验证类型和其他非预期值的数据之后,一个简单的脚本可能在数据库端看起来像这样:

//See if the Bus exists
SELECT id FROM Busses WHERE id={$bus_id};

//See if the given Persons exist
SELECT id FROM Persons WHERE id IN ({$comma-seperated-person-ids});

//Finally check the mappings table and discover who is on that bus.
SELECT person_id FROM Busses_Persons WHERE bus_id={$bus_id} person_id IN ({$comma-seperated-ids});

我认为这个顺序很重要,因为假设总线不存在,如果第一个查询没有执行以确定现有总线,则此页面将返回成功并显示一个空列表。如果没有人存在且您没有执行第二个查询以确定您的哪些人员存在,哪些不存在,您也将返回没有人的成功页面。严格来说,如果任何提供的数据无效或不存在,则应返回错误页面。

如何获得该公交车上的人员列表,给定一组人员并给出公交车, AND 查明是否有任何特定人员或公交车存在或不存在,以及单个查询中的所有内容?

我认为你可以非常深入地破解(即使用PDO维护数据库抽象,你也可能不会走得太远),或者它成为数据库执行时间的问题。但我真的想知道其他开发人员如何在这里遇到问题时更快更高效地编写脚本?

0 个答案:

没有答案