我有一个复杂的数据库关系(对我来说很复杂)。从理论上讲,我认为这是一个很好的设计,但我现在的障碍是在尽可能少的查询中从中获取数据。这是我的数据库结构:
学生表: 一些字段,例如姓名、电话、电子邮件等。
students_requirements 表(映射表): 学生卡, requirement_id, 日期
需求表(属于需求类型): ID, requirement_type_id, 姓名
requirement_type 表(有很多要求): ID, 类型, 姓名,
好的,下面是一个如何使用它的例子。我可以构建需求类型。一个例子就像一个任务。每个任务都有多个要求。学生可以满足特定作业的要求,但不一定满足所有作业的要求。所以我想按学生查询所有作业。假设系统中输入了 50 个作业,而 jon smith 已经输入了其中 4 个作业的要求。我想通过 jon smith id 查询以找到他输入了任何要求的所有作业。
我希望这是有道理的。我唯一的猜测是使用连接,但老实说,我真的不太了解它们。
任何帮助都会很棒!
最佳答案
试试这个:
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 .
关于php - 使用连接的mysql不同查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12230582/