mysql - 组合四个表 - MySQL

标签 mysql join

我需要从课外事件计划数据库中的四个表中提取数据:时间表、事件、 child 和家长。

时间表包含主键、对事件的引用以及对子事件的引用。

首先,我需要从“事件”表中获取我选择的事件的 ID(例如搜索“足球”并获取相应的 ID)。然后,我需要使用它在时间表表中搜索正在执行该事件的每个 child 并显示这些详细信息。 Children 表中的每个条目都包含对 Parent 的引用。我最终需要提取此引用,以便可以显示 child parent 的姓名。

最终结果应如下所示:

activity_id | child_name | parent_name

非常感谢所有建议! :)

仅供引用,这是我的表架构:

<!--CREATE CHILD TABLE-->

CREATE TABLE Child (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    forename VARCHAR(30) NOT NULL,
    surname VARCHAR(30) NOT NULL,
    gender ENUM('male', 'female') NOT NULL,
    dob DATE NOT NULL,
    guardian INT NOT NULL,
)


<!--CREATE GUARDIAN TABLE-->

CREATE TABLE Guardian (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(5) NOT NULL,
    forename VARCHAR(30) NOT NULL,
    surname VARCHAR(30) NOT NULL,
    address1 VARCHAR(30) NOT NULL,
    address2 VARCHAR(30),
    town VARCHAR(30) NOT NULL,
    county VARCHAR(30),
    postcode VARCHAR(10) NOT NULL,
    telephone VARCHAR(20) NOT NULL
)


<!--CREATE ACTIVITY TABLE-->

CREATE TABLE Activity (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    day ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') NOT NULL
)


<!--CREATE SCHEDULE TABLE-->

CREATE TABLE Schedule (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    child_id INT NOT NULL,
    activity_id INT NOT NULL,
    date DATE NOT NULL
)

最佳答案

SELECT Activity.id, Child.forename, Child.surname, Guardian.forename, Guardian.surname
  FROM Activity
  INNER JOIN Schedule ON Schedule.activity_id = Activity.id
  INNER JOIN Child ON Schedule.child_id = Child.id
  INNER JOIN Guardian ON Child.guardian_id = Guardian.id
  WHERE Activity.name = 'football'

关于mysql - 组合四个表 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820844/

相关文章:

mysql - 使用左连接语法 SQL

mysql - LEFT JOIN 订单和限制

python - 如何将本地mysql数据库上传到heroku app?

php - 检索与 PHP mysqli_real_connect() 建立连接需要多长时间

mysql 连接2个表并计算每个表中的所有行

SQL - JOIN BETWEEN 与 WHERE BETWEEN

mysql - 通过表连接优化慢速 Lon/Lat 查询

MySQL 根据找到的 ID 返回 1 或 0

python - sqlite 不自动递增

PHP/MySQL - 如果查询失败如何删除插入?