none
請教一個SQL語法 RRS feed

  • 問題

  •  

    請問一個SQL語法
    現有A B兩個資料表

    A資料表有 x,y兩個欄位,
    B資料表有 n,m兩個欄位,

    x和y欄位存的值皆為B資料表n這個欄位,m是n這個顯示的名稱
    ex

    A               B
    -----     -----------
    x    y       n       m
    1    4       1       圓形
    2    5       2       三角形
                    3       四角形
                    4       吃飯
                    5       睡覺

    基本上B資料表就是一個代碼的集合檔

    請問若我要撈出如以下的資料集 語法要如何下?

    C             
    -----    
    x  ,  y      
    圓形  , 吃飯    
    三角形 ,  睡覺

    麻煩各位指教了。感謝

    2012年3月2日 上午 02:45

解答

  • 試試看這樣是不是你要的。

    declare @A table (x int,y int)
    declare @B table (n int,m nvarchar(10))
    
    insert into @A values (1,4),(2,5)
    insert into @B values (1,'圓形'),(2,'三角形'),(3,'四角形'),(4,'吃飯'),(5,'睡覺')
    
    select *
    from @A
    
    select *
    from @B
    
    select b1.m,b2.m
    from @A a
    left join @B b1 on a.x = b1.n
    left join @B b2 on a.y = b2.n


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已提議為解答 ChenBruceModerator 2012年3月2日 上午 03:36
    • 已標示為解答 菲羽 2012年3月2日 上午 07:11
    2012年3月2日 上午 02:51

所有回覆

  • 試試看這樣是不是你要的。

    declare @A table (x int,y int)
    declare @B table (n int,m nvarchar(10))
    
    insert into @A values (1,4),(2,5)
    insert into @B values (1,'圓形'),(2,'三角形'),(3,'四角形'),(4,'吃飯'),(5,'睡覺')
    
    select *
    from @A
    
    select *
    from @B
    
    select b1.m,b2.m
    from @A a
    left join @B b1 on a.x = b1.n
    left join @B b2 on a.y = b2.n


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已提議為解答 ChenBruceModerator 2012年3月2日 上午 03:36
    • 已標示為解答 菲羽 2012年3月2日 上午 07:11
    2012年3月2日 上午 02:51
  • Hi,

    感謝TerryChuang大大的範例…

    的確可以達到想要的目的。

    題外話 我直接copy上面的code 執行時 會出錯也~

    我把它insert into @A values (1,4),(2,5)
    刪成只有插入一筆
    insert into @A values (1,4)

    這樣才不錯出錯也…不知為何會如此~

    2012年3月2日 上午 05:46
  • 應該是版本的關係,請問你的SQL Server是哪個版本?我的是SQL Server 2008 R2。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月2日 上午 06:03
  • 我的也是 SQL Server 2008 R2 版本

    附上圖片…真是怪了~

    2012年3月2日 上午 06:10
  • 你這圖是SSMS的版本。你下SELECT @@VERSION看看。

    2012年3月2日 上午 06:43
  • 你這圖是SSMS的版本。你下SELECT @@VERSION看看。

    -跑出這樣的訊息-

    Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

    2012年3月2日 上午 06:48
  • 看起來你的Database Engine是2005,印象中要2008才有支援上述的寫法。

    我的版本資訊是這樣:

    Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)   Mar 29 2009 10:11:52   Copyright (c) 1988-2008 Microsoft Corporation  Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM) 


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月2日 上午 06:50
  • 看起來你的Database Engine是2005,印象中要2008才有支援上述的寫法。

    我的版本資訊是這樣:

    Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)   Mar 29 2009 10:11:52   Copyright (c) 1988-2008 Microsoft Corporation  Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM) 


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    ok...我了解了…剛才找了一下,似乎的確是如此

    所以在08以前的版本

    不能一次這樣寫多筆進去囉~

    ps:感覺我這個版本,是披著狼皮的羊…不都升上2008的圖示了…

    怎麼Database Engine 還是2005的 @@

    2012年3月2日 上午 07:11
  • ps:感覺我這個版本,是披著狼皮的羊…不都升上2008的圖示了…

    怎麼Database Engine 還是2005的 @@

    SSMS 和 SQL Server Engine 是兩回事

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年3月2日 上午 07:15
  • 有關查詢SQL Server的版本號碼,可以參考德瑞克老師的文章。

    http://sharedderrick.blogspot.com/2008/09/sql-server-version.html


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月2日 上午 07:26