2015-04-15 1 views
0

У меня есть что-то вроде:MySQL, как повторно использовать select aliase столбца, когда я выполняю подзапрос aliase?

Select1 ... 
     ,(fieldA - fieldB) AS Y, 
     ,(Select2 
       (Select3 percent 
        From ... 
        Join.... 
        Where ... 
        Order by some_date 
        Limit 1) AS X 
      From ... 
      Join... 
      Where ... 
      Order by some_date2 
      Limit 1) AS X 
     ,(X * Y) AS output 
    From ... 
    Join ... 
    Join ... 
  • Да я Выбери вложенные Select внутри Select - каждый, используя значение от одного уровня вверх (! Они не будут работать без внешних уровней)
  • Selects используется потому, что я нужен фильтр после «дат ближайшего к данному, но не новее» в каждом выбрать
  • Как Вы можете видеть, что я повторно результаты, возвращаемые в этом вложенных выберите дважды
  • Сейчас я копирую, что вложенный выберите туда, где я написал X в выше псевдокода

Все в порядке, пока мне не нужно повторно использовать значение, возвращаемое этим вложенным выбором.

Как повторно использовать псевдоним X в определении столбца «output»?

PS Пробежал мимо прежнего кода, как больше, чем A4 прямо сейчас! Он работает так, как ожидалось, но трудно смотреть на глаза.

+0

Почему вы не используете регулярное заявление JOIN? – Alex

+0

Причина Вложенные ЛЕВЫЕ СОЕДИНЕНИЯ жалуются на то, что столбцы не найдены. Эти столбцы должны поступать из самых внешних JOIN, но это необходимо для вложенных JOIN. Вложенные элементы выбора не жалуются на них. –

ответ

1

Вы можете сделать это, еще раз, еще один вложенный SELECT. Этот новый внешний SELECT может затем получить доступ к X и Y.

Select0 
     ... 
     ,(X * Y) AS output 
    From (
     Select1 ... 
      ,(fieldA - fieldB) AS Y, 
      ,(Select2 
        (Select3 percent 
         From ... 
         Join.... 
         Where ... 
         Order by some_date 
         Limit 1) AS X 
       From ... 
       Join... 
       Where ... 
       Order by some_date2 
       Limit 1) AS X 
     From ... 
     Join ... 
     Join ...) AS values 
Смежные вопросы