2011-04-28 6 views
4
에 자신의 별명 오류가 있어야합니다

나는 다음과 같은 쿼리가 :모든 파생 테이블은 MySQL의

SELECT SUM(cost) 
FROM (

SELECT s.cost 
FROM sandwiches AS s 
WHERE s.name = "Cheese Steak" 
) 
UNION (

SELECT p.cost 
FROM pizza AS p 
WHERE TYPE = "Plain" 
AND SIZE = "L" 
) 

나에게의 오류 제공 :

# 1248 - 모든 파생 테이블 자체를 가지고 있어야합니다 별명

답변

6

당신은 당신의 임시 테이블 별칭을 필요

SELECT SUM(cost) 
FROM 
(
    (
    SELECT s.cost 
    FROM sandwiches AS s 
    WHERE s.name = "Cheese Steak" 
) AS T1 
UNION 
    (
    SELECT p.cost 
    FROM pizza AS p 
    WHERE TYPE = "Plain" 
    AND SIZE = "L" 
) AS T2 
) AS T 
,536,
+0

그래도 작동하지 않습니다. ( – Trim

+0

그래요, 귀하의 쿼리가 올바르게 구성되어 있다고 생각하지 않습니다 .ypercube가 좋은 답변을주었습니다. – Jage

+0

다른 괄호 세트가 필요하다고 생각합니다. 처음부터 시작하여에서 끝납니다. 종료. –

3

전체 합을 원하십니까?

SELECT 
    (SELECT SUM(s.cost) 
    FROM sandwiches AS s 
    WHERE s.name = "Cheese Steak" 
) 
+ 
    (SELECT SUM(p.cost) 
    FROM pizza AS p 
    WHERE p.TYPE = "Plain" 
     AND p.SIZE = "L" 
) 
1

다음 형태는 작업을 수행해야합니다

SELECT SUM(cost) FROM (
    SELECT cost FROM sandwiches WHERE name = "Cheese Steak" 
    UNION 
    SELECT cost FROM pizza WHERE TYPE = "Plain" AND SIZE = "L" 
) as temp 

MySQL은 단지 부속 선택에 대한 임시 테이블 이름이 필요합니다.