2012-04-23 4 views
3

이 문장을 더 짧게 쓸 수 있습니까?이 문장을 짧게/주문하여

Select S_name 
from 
    Supplier 
    JOIN Nation ON Supplier.S_nationkey = Nation.N_nationkey 
    JOIN Region on Nation.n_regionkey = region.R_regionkey 
Where 
    Region.r_name = 'AFRICA' 
Union 
Select C_name 
from 
    Customer 
    JOIN Nation ON Customer.C_Nationkey = Nation.N_nationkey 
    JOIN Region on Nation.N_regionkey = Region.R_regionkey 
Where 
    Region.R_name = 'AFRICA' 

나는 이름으로 내 출력을 주문하려면,하지만 난 내가 출력으로 C_name 및 S_Name이 있습니까 원인, 왜 몰라?!

감사

ORDER BY 절에 관해서는
+0

당신이 사용하는 어떤 DBMS를? (mssql, mysql oracel)? – Arion

+0

S_name과 C_name을 함께 한 열에 출력하려면 실제로 단축 할 수 없습니다. 'UNION ALL'을 사용하여 결과에 중복 제거가되지 않도록 한 다음, 끝에'ORDER BY name'을 가진'C_name as name'을'S_name AS name''에 추가하십시오. –

답변

2

쿼리의 끝에서

ORDER BY 1 

시도 그 다음 ORDER BY을해라.

Select S_name As Names 
    from Supplier 
    JOIN Nation 
     ON Supplier.S_nationkey = Nation.N_nationkey 
    JOIN Region 
     on Nation.n_regionkey = region.R_regionkey 
    Where Region.r_name = 'AFRICA' 
    Union 
    Select C_name As Names 
    from Customer 
    JOIN Nation 
     ON Customer.C_Nationkey = Nation.N_nationkey 
    JOIN Region 
     on Nation.N_regionkey = Region.R_regionkey 
    Where Region.R_name = 'AFRICA' 
    ORDER BY Names 

같은 열에서 데이터를 필요로하지 않는 경우에, 당신이 이런 식으로 할 수있는 :

Select S_name, c.C_name 
from Supplier 
JOIN Nation 
    ON Supplier.S_nationkey = Nation.N_nationkey 
JOIN Region 
    on Nation.n_regionkey = region.R_regionkey 
JOIN Customer c 
    on Nation.N_nationkey = c.C_Nationkey 
Where Region.r_name = 'AFRICA' 
ORDER BY S_name, c.c_name 
+1

외부' SELECT '또는 괄호 'SELECT ... UNION SELECT ... ORDER BY Names'는 잘 작동 할 것입니다. –

+0

사실, 제거했습니다. – Taryn

1

, 같은 열에서 모든 데이터를 원하는 경우에 당신은 주위에 SELECT을 배치 할 수 있습니다

관련 문제