0

我需要从课后活动计划数据库中的四个表中提取数据:时间表、活动、儿童和父母。

计划包含一个主键、对活动的引用和对子项的引用。

首先,我需要从活动表中为我选择的活动获取一个 ID(例如,搜索“足球”并获取相应的 ID)。然后,我需要使用它在 Schedule 表中搜索正在执行该活动的每个孩子并显示这些详细信息。Children 表中的每个条目都包含对 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
)
4

1 回答 1

1
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'
于 2012-08-05T23:30:12.777 回答