我需要从课后活动计划数据库中的四个表中提取数据:计划,活动,儿童和家长。
计划包含主键,对活动的引用以及对子项的引用。
首先,我需要从活动表中为我选择的活动获取一个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
)
答案 0 :(得分: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'