2015-04-01 73 views
0

我需要將SQL轉換爲transbase,因爲當我在Transbase中使用下面的腳本時,我得到一個相當醜陋的錯誤。我需要將SQL轉換爲Transbase

我的腳本:

SELECT STR_ID, TEX_TEXT AS STR_DES_TEXT, IF(EXISTS(SELECT * FROM tof_SEARCH_TREE AS SEARCH_TREE2 
    WHERE SEARCH_TREE2.STR_ID_PARENT <> tof_SEARCH_TREE.STR_ID 
), 1, 0) AS DESCENDANTS 
    FROM tof_SEARCH_TREE 
    INNER JOIN tof_DESIGNATIONS ON DES_ID = STR_DES_ID 
    INNER JOIN tof_DES_TEXTS ON TEX_ID = DES_TEX_ID 
WHERE STR_ID_PARENT <> NULL AND DES_LNG_ID = 21 AND EXISTS (
SELECT * FROM tof_LINK_GA_STR 
    INNER JOIN tof_LINK_LA_TYP ON LAT_TYP_ID = 3822 AND LAT_GA_ID = LGS_GA_ID 
    INNER JOIN tof_LINK_ART ON LA_ID = LAT_LA_ID 
WHERE LGS_STR_ID = STR_ID 
); 

我的錯誤是:

compile error: ')' expected: at line >2<: FROM tof_SEARCH_TREE AS SEARCH_TREE2

回答

1

我沒有用過Transbase,但它聲稱支持ANSI SQL功能。 if()不是ANSI功能,所以你可以嘗試:

SELECT STR_ID, TEX_TEXT AS STR_DES_TEXT, 
     (CASE WHEN EXISTS (SELECT 1 
          FROM tof_SEARCH_TREE AS SEARCH_TREE2 
          WHERE SEARCH_TREE2.STR_ID_PARENT <> tofSEARCH_TREE.STR_ID 
         ) 
      THEN 1 ELSE 0 
     END) AS DESCENDANTS 
FROM tof_SEARCH_TREE INNER JOIN 
    tof_DESIGNATIONS 
    ON DES_ID = STR_DES_ID INNER JOIN 
    tof_DES_TEXTS 
    ON TEX_ID = DES_TEX_ID 
WHERE STR_ID_PARENT IS NOT NULL AND 
     DES_LNG_ID = 21 AND 
     EXISTS (SELECT 1 
       FROM tof_LINK_GA_STR INNER JOIN 
        tof_LINK_LA_TYP 
        ON LAT_TYP_ID = 3822 AND LAT_GA_ID = LGS_GA_ID INNER JOIN 
        tof_LINK_ART 
        ON LA_ID = LAT_LA_ID 
       WHERE LGS_STR_ID = STR_ID 
      ); 

我覺得這是符合ANSI標準。而且,它也應該在MySQL中工作。

+0

...感謝您的幫助,但我得到一個新的錯誤:編譯錯誤: ')' 預期:在line> 3 <: FROM tof_SEARCH_TREE AS SEARCH_TREE2 – 2015-04-01 19:48:44

+0

順便說一句,等我使用DB展臺爲TECDOC數據庫...和我需要使這個查詢以.sql格式導出結果。 – 2015-04-01 20:09:44