3

我有一个复杂的数据库关系(对我来说很复杂)。理论上,我认为这是一个很好的设计,但我现在的障碍是通过尽可能少的查询从中获取数据。这是我拥有的数据库结构:

学生表: 一些字段,如姓名、电话、电子邮件等。

student_requirements表(映射表): student_id、requirements_id、日期

需求表(属于一个需求类型): id、requirement_type_id、name

requirements_type 表(有很多要求): id、type、name、

好的,这是一个如何使用它的示例。我可以构建需求类型。一个例子就像一个任务。每个作业都有多个要求。学生可以传递特定作业的要求,但不一定传递所有作业的要求。所以我想按学生查询所有作业。假设系统中输入了 50 个作业,而 jon smith 输入了其中 4 个作业的要求。我想通过 jon smith id 查询以查找他已输入任何要求的所有作业。

我希望这是有道理的。我唯一的猜测是使用连接,但说实话,我真的不太了解它们。

任何帮助都是极好的!

4

1 回答 1

2

尝试这个:

SELECT * FROM student_table, students_requirements_table,
requirements_table, requirement_type_table
WHERE student_table.name = "Jon Smith"
AND students_requirements_table.id = student_table.id
AND requirements_table.id = students_requirements_table.requirement_id
AND requirement_type_table.id = requirements_table.requirement_type_id;

检查表名是否准确,因为我不得不假设几件事(例如您的某些表名中有下划线),并注意以上所有内容实际上应该是一条长线(但这使得它在此页面上不可读,因此我将其拆分为多行)。

目前我没有 LAMP 装备设置,所以我无法模拟它来测试它,而且我已经有一段时间没有编写 MySQL 连接了,但我认为这是在正确的轨道上。

如果您需要使用 LEFT JOIN,请查看此页面:Left joins to link three or more tables

于 2012-09-01T20:16:39.290 回答