2016-04-03 91 views
2

你是我最后的希望。我花了整整一天,但我还没有决定如何创建这个查询。复杂的内部连接sql

这是我目前数据库图表

enter image description here

每一个存储有1个名册

每名册中的首席和工人组成。关于他们的信息在东西桌上。

我想要做什么?获取所有存储(方形地址),worker_name,worker_surname,chief_name,chief_surname。

我至今

select storage_address, 
storage_square, 
stuffs.stuff_name as chiefSurname, 
stuffs.stuff_surname as chiefName from storages 
inner join storageRoster on storageRoster.storageRoster_id=storages.storage_roster_id 
inner join Chiefs on storageRoster.chief_id = Chiefs.chief_id 
inner join stuffs on Chiefs.chief_stuff_id = stuffs.stuff_id 

但在此查询我只能得到每一个存储首领。请帮助。我很绝望。

+0

内部联接将返回只匹配,与出的数据,其硬牛逼的帮助下,你可以通过保持一个尝试调试一次加入 – TheGameiswar

+0

您必须将工人和其他材料(用于获取工人数据)加入您的查询。 – RubioRic

回答

3

你需要加入的东西表两次,一次为工人和一次首席:

select storage_address, 
storage_square, 
cs.stuff_name as chiefSurname, 
cs.stuff_surname as chiefName, 
ws.stuff_name as workerSurname, 
ws.stuff_surname as workerName 
from storages 
inner join storageRoster on storageRoster.storageRoster_id=storages.storage_roster_id 
inner join Chiefs on storageRoster.chief_id = Chiefs.chief_id 
inner join stuffs cs on Chiefs.chief_stuff_id = cs.stuff_id 
inner join Workers on storageRoster.worker_id = Workers.chief_id 
inner join ws cs on Workers.worker_stuff_id = ws.stuff_id 
+0

很高兴帮助:-) –