我希望有人能帮助我。我对 MySQL 还很陌生,所以我并不完全精通它的所有功能。
我得到了一个电子表格,其中包含以下格式的数据:
孩子姓名 |性别| 出生日期| 班级|家长姓名|家长电话|家长地址
我将其分为 3 个表,其中包括:
Child_details 数据类型 必需的键 Child_id INT AUTO_INCREMENT NOT NULL 主要 Child_fname VARCHAR(15) 非空 Child_sname VARCHAR(15) NOT NULL 性别枚举(M,F) NOT NULL NOT NULL DoB DATE NOT NULL NOT NULL 父母/照顾者 ID INTEGER NOT NULL 外国 Parent_details 数据类型 必填项 Parent_id INT AUTO_INCREMENT NOT NULL 主要 Parent_title CHAR(5) Paren _fname VARCHAR(15) NOT NULL 父/_sname VARCHAR(15) NOT NULL 父 _Add1 VARCHAR(25) NOT NULL 父 _Add2 VARCHAR(25) 父 _city VARCHAR(25) 父 _Pcode VARCHAR(15) NOT NULL 父 _phone VARCHAR(15) NOT NULL 活动数据类型 必填项 Activity_name CHAR(8) NOT NULL Activity_day CHAR(5) NOT NULL
然后用活动数据为点名列表制作了一个桥接表。有的孩子上一节课,有的上三门课:
计划数据类型所需键 Child_id INT NOT NULL 外来,复合 Activity_id INT NOT NULL 外部,复合
我正在尝试编写一个可以运行的查询,以检查我输入的数据是否正确。我希望能够以与电子表格相同的格式查看结果。到目前为止,这是我想出的:
SELECT CONCAT_WS(' ',Child_fname,Child_sname) AS 'Child Name',
Child_gender AS 'Gender',
Child_dob AS 'DoB',
COUNT Activity_name AS Activities,
CONCAT_WS(' ',Parent_title,Parent_fname,Parent_sname) AS 'Parent/Carer name',
Parent_phone AS 'Parent/Carer phone',
CONCAT_WS(' ',Parent_add1,Parent_add2,Parent_city,Parent_pcode) AS 'Parent/Carer Address'
FROM Child,Activity,Parent;
但我得到的结果表明,每个孩子都做了所有的活动,而且他们都有。我是否遗漏了一些明显的东西,我是否需要使用 COUNT DISTINCT 或 GROUP BY,还是我创建的表有误?
任何人都可以提供的任何信息将不胜感激。我希望我提供了足够的信息,但不要太多。