MySQL:连接多个表时获取重复值

时间:2014-07-31 00:59:15

标签: mysql sql

我正在尝试将多个表连接到一个非常大的表

  SELECT * FROM
  Person, Patient, vanster_implantat,
  hoger_implantat, vanster_operationer, 
  hoger_operationer, vanster_processorpatient, 
  hoger_processorpatient, processor

这会产生大量重复值,因为彼此之间没有任何关联。我希望所有表都以某种方式通过所有表所具有的'nummer'列连接到'Patient'表。我试图将所有表格同时连接到“患者”表:

    SELECT * FROM
Person, Patient, vanster_implantat, hoger_implantat, vanster_operationer, hoger_operationer, vanster_processorpatient, hoger_processorpatient WHERE
person.nummer = patient.nummer AND
patient.nummer = vanster_implantat.nummer AND
patient.nummer = hoger_implantat.nummer AND
patient.nummer = vanster_operationer.nummer AND
patient.nummer = hoger_operationer.nummer AND 
patient.nummer = vanster_processorpatient.nummer AND
patient.nummer = hoger_processorpatient.nummer

但是这导致No Data,因为它要么连接到所有表,要么根本不显示任何数据。这是一个全有或全无的情况。我想要它显示它当前与其他表的连接,它可能是一个连接或更多。我希望你理解我的意思,感谢你的帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

尝试

select
    *
from
    patient
left join
    person on person.nummer = patient.nummer
left join
    vanster_implantat on vanster_implantat.nummer = patient.nummer
left join
    hoger_implantat on hoger_implantat.nummer = patient.nummer
left join
    vanster_operationer on vanster_operationer.nummer = patient.nummer
left join
    hoger_operationer on hoger_operationer.nummer = patient.nummer
left join
    vanster_processorpatient on vanster_processorpatient.nummer = patient.nummer
left join
    hoger_processorpatient on hoger_processorpatient.nummer = patient.nummer;

这是一个左外连接,主驱动表为patient。它基本上意味着如果其他表没有加入,那么它仍然可以。如果要确保该表中存在匹配的记录,可以删除某些联接上的left

答案 1 :(得分:0)

您基本上需要JOINON表示Patient的外键。 就像这样:

SELECT * FROM Patient as pa LEFT JOIN Person as pe ON pe.nummer = pa.nummer

请阅读不同的JOIN条款,以确切了解您的需求,您还要查看GROUP BY等条款。我在第二篇评论中为您在使用SQL之前学习了SQL的基础知识,通过跟踪&错误。