我现在正在努力解决如何在不重复数据的情况下加入多个表的问题。 目前我有8个表,我希望从每位员工那里得到各种信息,如下所示:
SDQ分数,目标分数,CHI分数,预约次数,dna预约次数
我可以看到加入的表和字段如下
tblSDQ - Assessed_By_Staff_ID
tblGoals - Recorded_By_Staff_ID
tblCHI - Recorded_By_Staff_ID
tblReferral - Staff_ID
tblStaff - Staff_ID
tblDiaryAppointment - 需要使用Clinician_Invitee_Staff_ID连接到tblDiaryAppointmentClinician
我希望有人可以提供帮助或建议。我只是不知道是否可以使用相同的字段加入所有这些表,或者是否可以加入它们但是然后返回一些条目但是只计算其他条目?
答案 0 :(得分:0)
语法取决于您正在使用的rdbms。
您可以使用两个表中指定连接字段的连接:
select bla-bla
from table1
join table2 on ( table1.fileld_name1 = table2.fileld_name2 )
https://dev.mysql.com/doc/refman/5.0/en/join.html
如果需要外连接(显示可选表数据的空值),可以使用:
join table2 on ( table1.fileld_name1 = table2.fileld_name2 or table2.field_name2 is null )
加入couns你可以使用像这样的子查询
join ( select field_name3, coint(*) as cnt from table3 goup by field_name3 ) AS table3_counts
...
where ( table3_counts.field_name3 = ... or table3_counts.field_name3 is null )
https://dev.mysql.com/doc/refman/5.0/en/from-clause-subqueries.html
PS:加入通常很慢。最好对表进行非规范化以消除连接并获得性能。或者做简单的选择并加入后端代码。