0

所以我正在处理数据库中的一些表,我想知道查询它的最佳方法。

这是设置:

EVENTS:
int event_id
varchar event_name
date event_date

ATTENDANCE:
int attendance_id
int event_id (foreign key for EVENTS)
int user_id (foreign key for USERS)
int status

USERS:
int user_id
varchar first_name
varchar last_name
varchar email

我要做的几乎就是有一个我想要获得出勤的事件(ID#),然后查询出勤表以获取与该事件匹配的所有记录,然后查询用户表中引用的所有用户作为该活动的一部分出席。

想到的第一个想法是先查询数据库中的所有考勤条目,并得到一个数组,然后循环遍历每条记录以查询用户信息。然而,这似乎非常低效,并且必须有一个更好的方法来连接或类似的东西。我没有太多的连接经验,所以我想知道是否可以得到一些帮助。

这是我最初想的伪代码:

SELECT * FROM attendance WHERE event_id = eventID
while (row exists):
    SELECT FROM users WHERE user_id = attendanceUserID
    get info export in xml...etc.

我认为这不是最好的方法,那么更好的方法是什么?

4

1 回答 1

0

问题是“加入还是循环?” 技术答案是使用连接。您所描述的是连接的目的,即按条件组合表。

“从...中选择(选择更多)”不是解决方法。真正考虑一下“这两个表有什么以完全可靠和可识别的方式将它们连接起来的想法?上面评论中的注释是正确的。

然而,作为一个“老人”,这个问题并不那么简单。一切都是时间问题,你的和机器的。所以问问自己这个问题:想象方法 A 的效率是方法 B 的 100 倍。但是,您已经知道如何执行方法 B。并且......差异是 0.02 毫秒与 2 毫秒。(假设您有一个小数据集和一台快速机器。)如果您可以在三分钟内编写方法 B 并继续您的项目,那可能会很好。特别是如果有最后期限。因为从一个工作示例开始一切都会变得更容易,即使以不同的方式实现也是如此。它为您提供了一些东西来测试您正在学习的新方法。许多人在他们甚至不知道它是否重要之前就追逐效率。

首先让事情运转起来,然后让它们更快。(当然,不要把自己描绘成一个可怕的设计角落。虽然你没有,数据库很好,你只是在寻找从中获取信息的不同方法。)

于 2013-08-06T18:11:11.100 回答