繁体   English   中英

合并四个表-MySQL

[英]Combining Four Tables - MySQL

我需要从课后活动计划数据库中的四个表中提取数据:日程安排,活动,孩子和父母。

Schedule包含一个主键,对活动的引用以及对子项的引用。

首先,我需要从“活动”表中获取我选择的活动的ID(例如,搜索“足球”并获取相应的ID)。 然后,我需要使用它在Schedule表中搜索正在执行该活动的每个孩子,并显示这些详细信息。 子表中的每个条目均包含对父项的引用。 我最后需要提取此引用,以便显示孩子父母的姓名。

最终结果应如下所示:

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM