我已搜查高和低,都試過了好幾個小時來操縱,似乎適合其它各種查詢,但我已經沒有喜悅。重複值 - 高級
我在Microsoft SQL Server 2005中的幾個表,我試圖加入,其中一個例子是:
Company Table (Comp_CompanyId, Comp_Name)
GroupCode_Link Table (gcl_c_groupcodelinkid, gcl_c_groupcodeid, gcl_c_companyid)
GroupCode Table (grp_c_groupcodeid, grp_c_groupcode, grp_c_name)
ItemCode Table (itm_c_itemcodeid, itm_c_name, itm_c_itemcode, itm_c_group)
ItemCode_Link Table (icl_c_itemcodelinkid, icl_c_companyid, icl_c_groupcodeid, icl_c_itemcodeid)
我使用鏈接表到組關聯到公司,和項目到一個組,所以一個公司可以有多個組,每個組有多個項目。現在
,我試圖建立一個高級查找功能,將允許用戶輸入,例如,項目代碼,並將結果顯示那些有該項目的公司,聽起來不錯,簡單!
但是,我沒有做正確的事情,如果我使用下面的查詢'如果公司有這個項目或這個項目,顯示它的名字',我得到公司出現在結果集兩次,每次一次項目。
我需要的是能夠說的是:「(!顯示每個公司只有一次)讓我看到有這些項目的公司名單」
我了個去的使用COUNT,DISTINCT和HAVING,但由於我的查詢知識無法勝任,所以每個都失敗了!
從性能的角度來看,「任何項目」,豈不是有意義的使用「存在」,而不是「計數」?如果這些數量龐大的桌子不算太慢? – kevev22 2011-04-01 16:11:07
@ kevev22:'SQL Server'優化COUNT(*)> = 1','EXISTS'和'IN'到同一個計劃。 – Quassnoi 2011-04-01 16:11:59
你必須用'> = 1'替換任何項目的'= 2'。 – kevev22 2011-04-01 16:12:08