我需要从课外事件计划数据库中的四个表中提取数据:时间表、事件、 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/