Каждая производная таблица должна иметь свою собственную ошибку псевдонима в MySQL - PullRequest
4 голосов
/ 29 апреля 2011

У меня следующий запрос:

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 - Каждая производная таблица должна иметь свой собственный псевдоним

Ответы [ 3 ]

6 голосов
/ 29 апреля 2011

Вам нужно создать псевдоним для временных таблиц

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
3 голосов
/ 29 апреля 2011

Хотите ли вы всю сумму?

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 голос
/ 28 марта 2012

Следующая форма должна выполнять эту работу:

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 требует только временное имя таблицы для подвыбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...