2007年10月31日 星期三

SQL-UNION

出現這個問題,剛好是因為我的資料表格裡面(MELearn)原先用來紀錄是否上架(IsShelf)與是否Demo(IsDemo)的欄位格式都是使用 int 格式. 但是在網頁呈現上,我應該用 是/否 來取代 1/0,所以就會有了下面這種轉換查詢結果的需求.

在這過程中,我發現畫線處的SELECT用法,是我所好奇的.原來
執行: SELECT #1 #2
會產生一個新的資料表格,裡面的值為 #1,對應欄位為 #2
執行: SELECT #1 #2, #3 #4
會產生

#2 #4
#1 #3

搭配 UNION的語法,就可以讓我們多加一筆新紀錄
所以下面的語法就會變成

ID NAME
1
0

SELECT MELearn.ELearnID,MELearn.LessonName,TMP1.NAME IsShelf,TMP2.NAME IsDemo
FROM MELearn
INNER JOIN (SELECT 1 ID, '是' NAME UNION SELECT 0 ID, '否' NAME) AS TMP1 ON MELearn.IsShelf=TMP1.ID
INNER JOIN (SELECT 1 ID, '是' NAME UNION SELECT 0 ID, '否' NAME) AS TMP2 ON MELearn.IsDemo=TMP2.ID

沒有留言:

張貼留言