MS SQL下法問題 |
尚未結案
|
supman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
各位先進大家好,小弟有各SQL問題想跟大家請教一下: Table定義如下 id code1 code2 code3 1 1 1 1 2 2 2 2 3 3 3 3 code name 1 a 2 b 3 c 小弟想要得到 id code1 code2 code3 1 a a a 2 b b b 3 c c c 然後將上面的資料根據條件再Select一次,得到最後的結果,如: id name1 name2 name3 1 a a a 小弟的作法是將code1,code2,code3去join出name的資料,然後因為還要下條件,因此再把他包起來Select一次 ,因為有兩層要去join,因此sql變的很冗長,想請教各位先進,是否有比較好的sql下法,或者改變資料的定義方式,能夠簡單的來達成這樣的結果。 小弟用的是MSSQL,如果有表達不是很完整,請多多包涵。 小弟sql的下法如下: SELECT DataRank1.DataRank1, DataRank2.DataRank2 AS Expr1 FROM (SELECT tb_dept.dept_DataRank AS DataRank1 FROM tb_admin INNER JOIN tb_dept ON tb_admin.admin_department_ = tb_dept.dept_id INNER JOIN tb_member ON tb_admin.admin_id_ = tb_member.sales) DataRank1 CROSS JOIN (SELECT tb_dept.dept_DataRank AS DataRank2 FROM tb_admin INNER JOIN tb_dept ON tb_admin.admin_department_ = tb_dept.dept_id INNER JOIN tb_member ON tb_admin.admin_id_ = tb_member.sales) DataRank2 WHERE (DataRank1.DataRank1 = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA') 上面是只有兩個欄位的下法,還沒作實際資料測試,所以可能還有問題。 |
chris_shieh
高階會員 ![]() ![]() ![]() ![]() 發表:46 回覆:308 積分:240 註冊:2004-04-26 發送簡訊給我 |
[t1] id code1 code2 code3 1 1 1 1 2 2 2 2 3 3 3 3 [t2] code name 1 a 2 b 3 c select a.id, replace(a.code1, a.code1, (select name from t2 where code=a.code1)) , replace(a.code2, a.code2, (select name from t2 where code=a.code2)) , replace(a.code3, a.code3, (select name from t2 where code=a.code3)) from t1 a where id='1' 如果不想在sql 內取代 也可以直接 select a.id, a.code1, a.code2, a.code3 from t1 a where id='1'結果出來以後再自己取代1=>a, 2=>b, 3=>c @瞭解越多.懂得越少@ 發表人 - chris_shieh 於 2005/09/12 14:47:10 |
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi supman, 1.建立一個使用者自訂函數,傳入一個 code 並回傳 Name
CREATE FUNCTION P1( @P_CODE INT) RETURNS VARCHAR(50) BEGIN IF (@P_CODE IS NULL) RETURN NULL RETURN (SELECT NAME FROM T2 WHERE CODE = @P_CODE) ENDPS:不太熟 MS SQL,寫的不好敬請見諒 SELECT id, dbo.p1(code1) AS name1, dbo.p1(code2) AS name2, dbo.p1(code3) AS name3 FROM T1
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |