我正在建立一个小型内部电话号码分机列表。
在数据库中我有两个表,一个people
表,一个numbers
表。关系是one-to-many
分别的。
我想在单个 HTML 表格中显示结果,每行一个人,但如果他们有多个数字,它会在单个列中显示这些数字,并在个人行上显示行跨度以进行补偿。
现在,要从数据库中获取要使用的结果,我可以这样做:
(pseudocode)
SELECT id, name
FROM people
foreach result as row {
SELECT number
FROM numbers
WHERE numbers.person_id = row['id']
}
这意味着我正在执行一个查询来获取所有用户,但是如果我有 100 个用户,我将执行 100 个额外的查询来获取每个用户的数字。
相反,我可以这样做:
(pseudocode)
SELECT number, person_id
FROM numbers
SELECT id, name
FROM people
foreach people as person {
echo name
foreach numbers as number {
if (number.id = person.id) {
echo number
}
}
}
因此,基本上它在做完全相同的事情,只是我做了两个查询以将所有结果放入数组中,然后循环遍历数组以格式化我的表。
我应该使用哪种方法或者有更好的方法来做到这一点?