2010-11-18 87 views
1

我有一个查询这样的事情(不,我的表和字段不会被这些名字叫,但结构是一样的) -为什么我无法从我的查询中选择?

SELECT table1.id, table2.id, table1.phone1 
FROM table1 LEFT OUTER JOIN 
    table3 ON table3.id = table1.id LEFT OUTER JOIN 
    table2 ON table3.id2 = table2.id  
    WHERE table1.phone1 IS NOT NULL AND LTRIM(RTRIM(table1.phone1)) <> '' 

UNION 

SELECT table1.id, table2.id, table1.phone2 
FROM table1 LEFT OUTER JOIN 
    table3 ON table3.id = table1.id LEFT OUTER JOIN 
    table2 ON table3.id2 = table2.id  
WHERE table1.phone2 IS NOT NULL AND LTRIM(RTRIM(table1.phone2)) <> '' 

UNION 

SELECT table1.id, table2.id, table2.phone 
FROM table1 LEFT OUTER JOIN 
    table3 ON table3.id = table1.id LEFT OUTER JOIN 
    table2 ON table3.id2 = table2.id  
WHERE table2.phone IS NOT NULL AND LTRIM(RTRIM(table2.phone)) <> '' 

运行良好。但是,当我尝试从中选择(我最终会尝试用分组依据等操作,但现在只是尝试一个简单的选择),就像这样:

SELECT * FROM 
    (SELECT table1.id, table2.id, table1.phone1 
    FROM table1 LEFT OUTER JOIN 
     table3 ON table3.id = table1.id LEFT OUTER JOIN 
     table2 ON table3.id2 = table2.id  
     WHERE table1.phone1 IS NOT NULL AND LTRIM(RTRIM(table1.phone1)) <> '' 

    UNION 

    SELECT table1.id, table2.id, table1.phone2 
    FROM table1 LEFT OUTER JOIN 
     table3 ON table3.id = table1.id LEFT OUTER JOIN 
     table2 ON table3.id2 = table2.id  
    WHERE table1.phone2 IS NOT NULL AND LTRIM(RTRIM(table1.phone2)) <> '' 

    UNION 

    SELECT table1.id, table2.id, table2.phone 
    FROM table1 LEFT OUTER JOIN 
     table3 ON table3.id = table1.id LEFT OUTER JOIN 
     table2 ON table3.id2 = table2.id  
    WHERE table2.phone IS NOT NULL AND LTRIM(RTRIM(table2.phone)) <> '') 

我得到的错误:

Incorrect syntax near ')'. 

我在做什么错?

回答

8

您错过了命名子查询。关闭像...) sub_query_name

+0

+1:我早上可以告诉它,当我看着它时我没有想到。 – Powerlord 2010-11-18 14:39:02

+0

非常感谢!我知道这就是我忘记的东西......它现在起作用:) – froadie 2010-11-18 14:39:55

+0

+1琐碎但快速找到! – Konerak 2010-11-18 14:41:18