2014-12-19 88 views
0

我想明白,我怎麼能得到什麼,我需要在一個查詢,我所描述的情況:在我的DB我可以在一個查詢中獲得另一個對象列表的對象列表嗎?

表:

用戶(ID,姓名,DateJoin) ---- ID是PK

資料(ID,姓名,dateCreated會)--- ID是PK

用戶配置(用戶ID,profileID) - 用戶ID & profileID都是PK和FK。

*澄清:每個用戶可以有多個配置文件,每個配置文件可以分配給許多用戶。

現在我有我的應用程序兩類:

APPUSER

  • ID
  • 名稱
  • DateJoin
  • List<AppProfile>(配置文件列表)

AppProfile

  • ID
  • 名稱
  • dateCreated會

現在我想在一個查詢數據庫得到我需要的,以便返回一個數據:

List<AppUser>,在每個AppUser中的AppUser列表我有一個AppProfile列表,這個AppUser具有特定的AppProfile。

更新:

本的答案是什麼,我一直在尋找,但有他的解決一個問題:

它唯一的返回擁有配置文件的用戶,用戶無需配置文件不返回。

所以,比如我有2個用戶,瓊斯2個型材和吉姆沒有我得到:

日期 - 表:

行[0]:用戶名:「瓊斯「,配置文件名稱:」one「。

行[1]:用戶名:「Jones」,配置文件名稱:「two」。

沒有吉姆(沒有配置文件關聯和他在一起。

有什麼辦法可以解決這個問題的其他用戶的提?

+1

mysql <> sql-server - 請僅使用您定位的實際dbms的標籤。 – Filburt 2014-12-19 09:50:02

+0

我很確定你需要多個查詢 - 一個讓所有的應用程序用戶,然後另一個來獲取關聯的應用程序配置文件。加入只能在1:1的基礎上進行。您可以將所有相關的應用程序配置文件連接到查詢中的單個列中,然後將其在代碼中分離出來,但這不是理想的IMO。 – timothyclifford 2014-12-19 09:55:20

回答

0

的SQL這是相當簡單的,你只要加入所有表。當然,你會得到許多記錄他們的是用戶和配置文件的組合,所以你將不得不遍歷結果集,並相應地填充你的類。

SELECT * 
FROM User u 
LEFT OUTER JOIN UserProfile up on u.ID = up.UserId 
LEFT OUTER JOIN Profile p on p.Id = up.ProfileId 

這將有類似實體整潔幀工作。利用這一點,你可以創建一個多對多的關係,EF將爲你做所有重要的事情。

UPDATE:

按照您的意見我已經更新了查詢總是返回所有用戶,即使他們沒有配置文件。這些用戶的UserProfile和Profile字段將包含NULL。

+0

本,一個問題,如果用戶沒有任何配置文件SQL不返回用戶,只是返回與配置文件相關的用戶。 但我想獲得所有用戶,以任何方式解決它? – Ron 2014-12-19 11:23:48

+0

@Ron查看更新後的查詢。 – 2014-12-19 11:33:18

+0

不錯,工作.. – Ron 2014-12-19 11:39:41

相關問題