2016-03-27 5 views
-2

Я пытаюсь написать ниже запрос с INNER JOIN вместо ИРегистрация 4 таблицы с внутренним соединением

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

Прежде всего позвольте мне Reffer вас 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> 
0
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