2014-09-10 196 views
0

請看下面的表格結構。MySQL:從多個表中檢索數據

enter image description here

Client表具有foreign keyProvider表,這是不NULLPortfolio表的foreign key表爲Client表,它也不是NULL

我需要檢索從Portfolio表中的所有領域,Client的名稱和誰被分配到由Portfolio表所指的ClientProvider名稱..

我怎樣才能做到這一點的SQL碼?

回答

0

嘗試使用INNER JOIN進行查詢。

SELECT Portfolio.*,Client.name as "Client Name",Provider.name as "Provider Name" 
FROM Portfolio 
INNER JOIN Client ON Portfolio.Client_id=Client.id 
INNER JOIN Provider ON Client.Provider_id = Provider.id 
+0

它的工作原理,但有沒有我們可以取代Client'表「名稱的'「名稱」列標題的方式「輸出中」Provider「表的列?因爲每個人都有相同的名稱'名稱'?除此之外,它將返回所有3個表中的所有數據? – 2014-09-10 10:55:27

+0

是的,你可以。而不是'*'你用'alias name'寫出了所有'列重複名稱' – Sadikhasan 2014-09-10 10:56:51

+0

我的意思是我需要'投資組合'中的所有數據,但不是來自其他人。那麼我應該在哪裏指定列名? – 2014-09-10 10:58:35

0

這應該給你你所期望的結果:

Select * from client 
    join portfolio on client.id=portfolio.clientId 
    join provider on client.provider_id=provider.id 
+0

因爲除了'Provider',我不需要表中的所有字段,所以我如何指定我需要的列併爲其分配'別名'? – 2014-09-10 11:02:22

+0

@Sniper添加您需要的列名稱而不是客戶端。如果您有公共名稱,則必須將表名添加爲前綴。 – Jens 2014-09-10 12:59:48