【问题标题】:mysql distinct query using joins使用连接的mysql不同查询
【发布时间】:2012-08-27 04:06:16
【问题描述】:

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

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

students_requirements 表(映射表): 学生卡, 需求ID, 日期

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

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

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

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

任何帮助都会很棒!

【问题讨论】:

    标签: php mysql join mapping


    【解决方案1】:

    试试这个:

    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

    【讨论】:

    • MySQL 并不要求所有内容都在一行上。如果您需要一个模拟它的地方,请使用 www.sqlfiddle.com。
    • 嘿,我意识到我在回复你这件事上落后了。我只是不想你的帮助被忽视。这个查询实际上对我有用。我现在的问题是通过 php 处理返回的信息。没那么简单:)
    猜你喜欢
    • 2015-05-23
    • 1970-01-01
    • 2017-03-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2010-12-28
    • 2019-05-05
    相关资源
    最近更新 更多