2012-02-08 67 views
2
Dim LocationList = 
From rows In db.Locations, clientRow In db.Clients, stateData In db.Ref_States 
Where rows.State = stateData.ID 
Select ClientName = clientRow.Name, rows.ID, rows.Address1, rows.Address2, rows.City, StateName = stateData.Name, ShortStateName = stateData.ShortName, rows.ZipCode Order By Address1 

這就是我的,這是非常錯誤的。一切都顯示出來了,但數據顯示不正確,顯示的行比現有的多。如何從兩張表格中獲取我的信息?

enter image description here

我想我可能有它,但你可以看看我的代碼,並告訴我,如果你看到任何問題?

 Dim LocationList = 
     From rows In db.Locations, clientRow In db.Clients, stateData In db.Ref_States 
     Where rows.State = stateData.ID And rows.ClientID = ucClientID And rows.ClientID = clientRow.ID 
     Select ClientName = clientRow.Name, rows.ID, rows.Address1, rows.Address2, rows.City, StateName = stateData.Name, ShortStateName = stateData.ShortName, rows.ZipCode Order By Address1 

回答

3

這裏假設你的外鍵映射到Location.State Ref_State.ID

Dim LocationList = From rows In db.Locations _ 
        Join rs In Ref_State On rows.State Equals rs.ID _ 
        Order By rows.Address1 _ 
        Select rs.Name 

上述回答你原來的問題。

Dim LocationList = _ 
    From clientRow In db.Clients _ 
    Join rows in db.Locations On clientRow.ID Equals rows.ClientID _ 
    Join db.stateData In Ref_States On rows.State Equals stateData.ID _ 
    Select ClientName = clientRow.Name, rows.ID, rows.Address1, rows.Address2, rows.City, StateName = stateData.Name, ShortStateName = stateData.ShortName, rows.ZipCode _ 
    Order By Address1 

與加入明確使它更具可讀性,我認爲寫作是:將客戶表之後,如下我會寫查詢。

+0

在位置表'狀態'有來自Ref_State表的編號 – Landmine 2012-02-09 02:34:59

+0

我得到了它的工作,但是我怎樣才能從2個表中提取數據?我嘗試添加另一個JOIN,但它不起作用。 – Landmine 2012-02-09 03:14:05

+1

你想從中選擇數據還有哪些表(除了位置和Ref_State)?如果您提供一些額外的信息,我可能會提供幫助。 – 2012-02-09 03:41:50