嗨,我正在使用 Mysql PHP 组合,我有 3 个名为
1. Student(nameid,name,percent)
2. Location(locid,area,state)
3. Refer(referid,locid,nameid) 的多对多关系的表,这意味着
一个学生有许多位置记录,一个位置也有许多学生,这些关系由引用表维护,方法是同时指定表 ID'S(STUDENT,LOCATION),并且两个表的记录不应重复
MY TABLES
TABLE-STUDENT
NAMEID - NAME - PERCENT
N1 ---- nameA -------70
N2----- nameB --------63
N3----- nameC --------45
TABLE -LOCATION
LOCID --AREA-- 状态
L1--------areaA ----------P
L2-----areaB --------- Q
L3-- ------areaC-------- R
TABLE-REFER
REFERID-- NAMEID-- LOCID
R1-------- N1----- L1
R2-------- - N1------ L2
R3---------- N2------ L1
R4---------- N3------ L3
ACTUAL OUPUT
NAMEID -- 名称-- 百分比 --LOCID-- 区域-- 状态 N1-- 名称 A--
70------L1------区域 A-- ---P
N1- -----nameA----70-------L2-----areaB----- Q Duplicate STUDENT RECORD
N2-----nameB----63-----L1-----areaA------ P
N3-----nameC----45--- ----L3-----区域C------ R
问题:
当我尝试按如下方式通过 sql join 加入三个表时
select * from student join refer on student.nameid=refer.nameid join location on location.locid=refer.locid
它显示的记录包括来自学生的重复记录(如果学生记录连接到来自位置的多个记录)但我只需要具有许多位置记录的唯一学生记录,例如
NAMEID-- NAME-- PERCENT-- LOCID-- AREA-- STATE
N1----- nameA ----- 70-------- L1-------- 区域A---- P
---------------------------- -----L2-------- areaB---- Q NULLfor Student
N2中的重复记录----- nameB--------63-------- L1 -------- areaA----- P
N3-----nameC--------45---------L3--------面积C-----R
或
NAMEID-- NAME-- PERCENT-- LOCID-- AREA-- STATE---LOCID2-- AREA2-- STATE2
N1---------nameA--- -----70---- -- L1--------areaA----P------------L2------------areaB--------Q位置应该是结合学生
N2-------- nameB------------63------ L1----- areaA-------- P
N3----- --nameC-----------45-------L3------ areaC---- R 请
建议我通过 SQL 语句或 PHP 代码实现此目的的方法,因为我必须从这些数据中进行报告,例如
REPORT:
NAME: nameA
PERCENT:70
AREA1:areaA
AREA2:areaB STATE1
:P
STATE2:Q
-------------------- ---------
名称:nameA
PERCENT:63
AREA1:areaA
a STATE1:P
提前致谢