【问题标题】:Issues with joining multiple tables连接多个表的问题
【发布时间】:2015-10-30 10:09:59
【问题描述】:

目前我真的很苦恼,想弄清楚如何在不重复数据的情况下连接多个表。 目前我有 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

我希望有人可以提供帮助或建议。我只是不知道是否可以使用相同的字段加入所有这些表,或者是否可以加入它们然后返回一些条目,然后只计算其他条目?

【问题讨论】:

    标签: join left-join inner-join


    【解决方案1】:

    语法取决于您使用的 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:连接通常很慢。最好对表进行非规范化以消除连接并提高性能。或者做简单的选择并加入后端代码。

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2012-09-04
      • 1970-01-01
      • 2014-03-08
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多