Определение псевдонимов в статистическом запросе - PullRequest
0 голосов
/ 17 августа 2011

Мне нужно сделать:

SELECT COUNT(*)
  FROM some_table
 WHERE someAlias1 = someValue1 
   AND someAlias2 = someValue2;

someAlias - псевдоним для столбца в some_table. В моем случае я не могу назвать столбцы напрямую; Мне нужно использовать псевдонимы.

Проблема в том, что я знаю только об определении псевдонимов внутри предложения select, но я не понимаю, как я могу это сделать в этом случае.

Есть ли способ выполнить то, что мне нужно в этом случае?

edit: Зачем мне псевдонимы? Я строю запрос из альтернативных частей, и указанное выше условие применяется к разным столбцам из разных таблиц, но с одинаковой логической ролью. Поэтому мне нужен способ соотнести разные альтернативные столбцы с одинаковыми именами.

Буду признателен, если вы ответите на этот вопрос, только если вы знаете ответ, даже если вы не понимаете, зачем мне нужен псевдоним

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Вы можете сделать вложенный оператор SELECT, а затем вывести счет из внутреннего запроса. Я не вижу способа избежать использования имен столбцов

SELECT COUNT(*) 
  FROM(
        SELECT col1 as someAlias1, 
               col2 as someAlias2
        FROM   some_table
        WHERE  someAlias1 = someValue1
        AND    someAlias2 = someValue2
       ) as inner
2 голосов
/ 17 августа 2011

Я не могу понять сценарий, где вы не можете назвать столбцы напрямую.Если имя столбца дублируется, добавьте имя таблицы:

WHERE someTable1.someColumn1 = someValue1

Если имя столбца является зарезервированным ключевым словом или содержит пробелы, заключите его в кавычки:

WHERE `some Column1` = someValue1

Вы можете даже объединить оба:

WHERE someTable1.`some Column1` = someValue1
0 голосов
/ 17 августа 2011

Зачем вам нужны псевдонимы?Единственная причина для использования псевдонимов в вашем запросе заключается в повторном использовании, например, в предложении «has», например:

select count(*)  as C 
  from some_table 
 where someAlias1=someValue1 
   and someAlias2=someValue2
having C > someLimit1;
...