Использовать cid в sqlite вместо имени столбца? - PullRequest
2 голосов
/ 24 июля 2010

При создании представления имя, присвоенное столбцу, не всегда можно использовать в sqlite, чтобы впоследствии выполнить определенную операцию.Например, я создал следующее представление:

CREATE VIEW myview AS 
  SELECT amount, count(name), name 
    FROM mytable 
GROUP BY name 
  HAVING count(name) > 1;

Затем я хотел бы выполнить следующую операцию:

SELECT total(amount*count(name))
  FROM myview;

К сожалению, count (name) - это имя, данное sqlite дляследовательно, второй столбец нельзя использовать в операторе выбора.PRAGMA table_info(myview) показывает нам, что cid для подсчета (name) равен 1, есть ли в любом случае использовать эту информацию, чтобы иметь возможность выполнить некоторые вычисления для этого столбца?

Ответы [ 2 ]

2 голосов
/ 24 июля 2010

Вам необходимо определить псевдоним столбца:

CREATE VIEW myview AS 
  SELECT amount, 
         COUNT(name) AS name_count, 
         name 
    FROM mytable 
GROUP BY name 
  HAVING count(name) > 1;

Тогда вы сможете использовать:

SELECT SUM(v.amount * v.name_count)
  FROM myview v;

Я изменил total на SUM, что более соответствует другим базам данных ( Агрегатные функции SQLite ).

0 голосов
/ 14 ноября 2014
SELECT total(amount*"count(name)")
  FROM myview;

тоже работает.Намного лучше использовать псевдоним столбца, когда вы можете, как указано выше.

Однако иногда вы находитесь в безвыходном положении и не имеете такой роскоши.Если вы указываете имя, вы можете использовать его как есть.

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