2015-12-30 11 views
0

我確定這是在其他地方回答的,但我不確定如何搜索此特定問題。同一個表中的列的SQL更新ID

比方說,我有2個表:

  • InputDataNames與列[Prospect_Name], [Product_Name], [Market_Name]

  • Entity與在[Name]InputDataNames表中使用的列[EntityId], [Name], [EntityTypeId]

現在假設我想創建等於InputDataNames表,但不是名稱,從Entity表ID填寫:

  • InputDataIDs與列​​

使用InputDataNames表中填充適當的ID組合,我怎樣才能加入Entity表以獲得期望的效果?

注:我知道這是馬虎,只是做一點數據庫清理。

+0

where isIdentifId ProductId和MarketId應該來自哪裏?這兩個表都沒有這些值。 – user1336827

+0

[EntityId]字段。說[Prospect_Name] = ProspectA,將其與* Entity *表中的[Name]字段進行匹配,然後獲取該行的[EntityID]。 – CurlieQ1034

+0

使用子查詢來選擇與名稱對應的ID。 –

回答

0

您可以連接到實體表三次。假設EntityTypeId列確定實體是否是潛在客戶,產品或市場,那麼您應該在連接中包含該列。如果它們的編號爲1,2,3:

select 
    pros.entityid, prod.entityid, mkt.entityid 
from 
    inputdatanames id 
inner join 
    entity pros on id.prospect_name = pros.name and pros.entitytypeid = 1 
inner join 
    entity prod on id.product_name = prod.name and prod.entitytypeid = 2 
inner join 
    entity mkt on id.market_name = mkt.name and mkt.entitytypeid = 3 
0
insert InputDataIDs 
     (Prospect_ID, Product_ID, Market_ID) 
select Prospect.EntityID 
,  Product.EntityID 
,  Market.EntityID 
from InputDataNames 
left join 
     Entity Prospect 
on  Prospect.EntityTypeId = 1 -- Type of prospect 
     and Prospect.Name = InputDataNames.Prospect_Name 
left join 
     Entity Product 
on  Product.EntityTypeId = 2 -- Type of product 
     and Product.Name = InputDataNames.Product_Name 
left join 
     Entity Market 
on  Market.EntityTypeId = 3 -- Type of market 
     and Market.Name = InputDataNames.Market_Name 
相關問題