【问题标题】:Inner Join Three Tables内连接三表
【发布时间】:2012-12-24 15:27:33
【问题描述】:

我在 Oracle APEX 工作。我想通过 INNER JOIN 从三个表中生成报告。这些表是 Fallows。

患者(Par_Id(Pk),Pat_Name,Pat_Gender)

历史(His_Id(Pk),Pat_id(Fk),Treated_By)

治疗 ( Treat_Id, His_id(Fk),Pat_id(Fk) ,Treat_Type ,收费)

我想显示上面三个表中提到的所有报告中的列。

谢谢。

【问题讨论】:

  • 您所描述的努力是值得的……那么问题是什么?
  • ...你用mysql标记它...
  • 您需要三个表中的所有列,并且您接受了具有特定列的答案,请相应地修改您的问题..

标签: sql oracle11g oracle-apex


【解决方案1】:

您应该始终指定要返回的列,尤其是当表包含相同的列名时

SELECT p.Par_Id, p.Pat_Name, p.Pat_Gender,
    h.His_Id, h.Treated_By,
    t.Treat_Id, t.Treat_Type, t.Charges
FROM Patient p 
INNER JOIN History h 
    ON p.PAR_ID = h.PAT_ID
INNER JOIN Treatment t
    ON h.HIS_ID = t.HIS_ID AND p.PAR_ID = h.PAT_ID

【讨论】:

    【解决方案2】:

    这应该可以解决问题

    SELECT * FROM Patient p 
        INNER JOIN History h 
            ON p.PAR_ID = h.PAT_ID
        INNER JOIN Treatment t
            ON h.HIS_ID = t.HIS_ID AND p.PAR_ID = h.PAT_ID
    

    【讨论】:

      【解决方案3】:

      试试这个

      Select * from 
      PATIENT  inner join HISTORY  on par_id=HISTORY.Pat_id
      inner join Treatment  on par_id=Treatment.Pat_id
      

      【讨论】:

        【解决方案4】:

        在mysql中太简单了

        SELECT 
            * 
        FROM PATIENT as p
        LEFT JOIN HISTORY as h ON h.Pat_id = p.Pat_Id
        LEFT JOIN Treatment as t ON t.His_id = h.His_Id
        

        【讨论】:

          猜你喜欢
          • 2012-08-03
          • 1970-01-01
          • 1970-01-01
          • 2011-11-10
          • 1970-01-01
          • 2019-10-19
          • 2017-09-02
          • 2014-10-16
          • 1970-01-01
          相关资源
          最近更新 更多