代码之家  ›  专栏  ›  技术社区  ›  Nishan256

使用内部联接联接4个表

  •  -2
  • Nishan256  · 技术社区  · 10 年前

    我正在尝试用INNER JOIN而不是AND编写下面的查询

    select ph.name, ph.position, d.name, COUNT(app.appointmentId)
    from physician ph, works_in w, appointment app, department d
    where ph.eid = w.physician 
        and d.did = w.department
        and ph.eid = app.physician
    group by ph.eid, ph.name, ph.position, d.name
    

    .

    我试过这种方法,但错误太多了

    select ph.name, ph.position, d.name, COUNT(app.appointmentId)
    from physician ph inner join works_in w
        on ph.eid = w.department,
        department d inner join works_in w 
        on d.eid = w.department,
        physician ph inner join appointment app
        on ph.ph.eid = app.physician
    group by ph.eid, ph.name, ph.position, d.name
    

    如何使用内部联接正确地编写它。

    2 回复  |  直到 10 年前
        1
  •  2
  •   sagi    10 年前

    首先让我推荐你 this site that explain all about join syntax's

    将查询更改为:

    select ph.name, ph.position, d.name, COUNT(app.appointmentId)
    from physician ph 
    inner join works_in w
        on ph.eid = w.department
    inner join department d  
        on d.eid = w.department
    inner join appointment app
        on ph.ph.eid = app.physician
    group by ph.eid, ph.name, ph.position, d.name
    

    连接的语法为:

    SELECT <COLUMNS>
    FROM <Table>
    INNER JOIN <Another_Table>
     ON(<Relations>)
    INNER JOIN <Another_table2>
     ON(<Other Relations>
    
        2
  •  0
  •   BilalAhmed    10 年前
        SELECT ph.name AS Name, ph.position AS Position,d.name AS Name, COUNT(app.appointmentId) AS Appointment
        FROM physician AS ph INNER JOIN works_in AS w
        ON ph.eid = w.department INNER JOIN department d 
    ON  d.eid = w.department INNER JOIN appointment app ON ph.eid = app.physician
        GROUP BY ph.eid,ph.name,ph.position,d.name