使用连接的mysql distinct查询

时间:2012-09-01 19:09:27

标签: php mysql join mapping

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

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

students_requirements表(映射表): 学生卡, requirement_id, 日期

需求表(属于需求类型): ID, requirement_type_id, 名称

requirement_type表(有很多要求): ID, 类型, 名,

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

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

任何帮助都会很棒!

1 个答案:

答案 0 :(得分: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