Как делать арифметические операции с псевдонимом в sqlite - PullRequest
0 голосов
/ 16 марта 2019

Я хочу вычислить с псевдонимом в sqlite (Пример изменен с http://www.sqlitetutorial.net):

если я делаю это так, я получаю сообщение об ошибке «нет такого столбца: track_count»

SELECT albumid,
       title,
       (
           SELECT count(trackid) 
             FROM tracks
            WHERE tracks.AlbumId = albums.AlbumId
       )
       tracks_count, tracks_count * album_nr
  FROM albums
 ORDER BY tracks_count DESC;

если я делаю это так, я получаю ноль для мультипликации

SELECT albumid,
       title,
       (
           SELECT count(trackid) 
             FROM tracks
            WHERE tracks.AlbumId = albums.AlbumId
       )
       tracks_count, "tracks_count" * album_nr
  FROM albums
 ORDER BY tracks_count DESC;

Данные таблицы для примера:

настольные альбомы

albums

таблица дорожек

tracks

1 Ответ

1 голос
/ 16 марта 2019

Здесь вам даже не нужен подзапрос:

SELECT
    a.albumid,
    a.title,
    COUNT(t.albumid) AS tracks_count,
    COUNT(t.albumid) * a.album_nr AS other_count
FROM albums a
LEFT JOIN tracks t
    ON a.albumid = t.albumid
GROUP BY
    a.albumid,
    a.title;

Если вы хотите, чтобы ваш текущий подход работал, то проблема в том, что вы ссылаетесь на псевдоним tracks_count втот же выбор, в котором он был определен.Это не разрешено, потому что псевдоним, возможно, еще даже не был вычислен.Но я бы рекомендовал использовать ответ, который я дал выше.

...