2014-12-09 77 views
1

我一直試圖在SQL中顯示特定類型的結果,但一直未能。我想這是可能的,但不知道如何。 我讀過這篇文章show only those columns which have data value但無法解決我的問題。 我有4個表:sparametros(保存參數代碼和說明),sparametrosnumericos然而,通過它們的參數代碼,參數代碼是獨一無二的,例如,給定一個代碼,比如說1210,假設它是一個文本類型參數,那麼代碼不會以數字或備註參數存在。但它存在於一般的sparametros表中。換句話說,sparametros保存所有參數,其他表格表示該主集合的子集合。 我試過使用左連接,但無法獲得結果。SQL加入不同的表並僅顯示NOT NULL值

這是我到目前爲止有:

SELECT P.SPar00Id, P.SPar00Descripcion, 
IF NOT ISNULL(N.SPar00NumValor) THEN 
     N.SPar00NumValor 
ELSEIF NOT ISNULL(T.SPar00TextoValor) THEN 
     T.SPar00TextoValor 
ELSE 
     M.SPar00MemoValor 
FROM sparametros p 
LEFT JOIN sparametrosnumericos N ON N.SPar00NumId = P.SPar00Id 
LEFT JOIN sparametrostexto T ON T.SPar00TextoId = P.SPar00Id 
LEFT JOIN sparametrosmemo M ON M.SPar00MemoId = P.SPar00Id 
WHERE P.SIns00Id = 1 AND 
      N.SIns00Id = 1 AND 
      T.SIns00Id = 1 AND 
      M.SIns00Id = 1; 

我使用MySQL現在(與Navicat的客戶端),同時還需要能夠獲得在SQL Server相同的結果。

執行此請求時收到的響應是: 「[Err] 1064 - 您的SQL語法有錯誤;請查看與您的MySQL服務器版本相對應的手冊, NOT ISNULL(N.SPar00NumValor)THEN「

回答

1

試試這個:

SELECT P.SPar00Id, P.SPar00Descripcion, 
     (CASE WHEN N.SPar00NumValor IS NOT NULL THEN N.SPar00NumValor 
      WHEN T.SPar00TextoValor IS NOT NULL THEN T.SPar00TextoValor 
      ELSE M.SPar00MemoValor 
     END) colName 
FROM sparametros p 
LEFT JOIN sparametrosnumericos N ON N.SPar00NumId = P.SPar00Id 
LEFT JOIN sparametrostexto T ON T.SPar00TextoId = P.SPar00Id 
LEFT JOIN sparametrosmemo M ON M.SPar00MemoId = P.SPar00Id 
WHERE P.SIns00Id = 1 AND N.SIns00Id = 1 AND T.SIns00Id = 1 AND M.SIns00Id = 1; 
+0

+一個糾正語法錯誤 – 2014-12-09 12:24:52

+0

不幸的是我得到與該查詢沒有結果。我不明白爲什麼,它看起來像你提供正確的說明。 – 2014-12-09 18:45:37