Ошибка «# 1054 — Неизвестный столбец» при использовании псевдонима с-в запросе?

#mysql #mysql-error-1054

#mysql #mysql-ошибка-1054

Вопрос:

При использовании следующего запроса я получаю сообщение об ошибке

 #1054 - Unknown column 'plus' in 'field list'
  

когда plus-minus используется. В противном случае запрос выполняется нормально. Я предполагаю, что есть что-то, связанное с псевдонимами, которые я не знаю, как использовать. Пожалуйста, руководство!

Спасибо.

Запрос:

 SELECT users.name,
count(*) as total, 
SUM(sms.views)  SUM(sms.downloads)  (SELECT count(*) FROM `smsfb` WHERE (`feedback`=1 OR `feedback`=100) AND userid=users.uniqueID) AS plus,
SUM(sms.delreq) (SELECT count(*) FROM `smsfb` WHERE (`feedback`=5 OR `feedback`=6) AND userid=users.uniqueID) AS minus,
plus-minus
FROM sms,users
WHERE sms.deviceID=users.uniqueID AND sms.catid!=23 AND sms.catid!=44 AND sms.catid!=45
AND date>="2011-10-03" AND date<"2011-10-09" 
GROUP BY users.uniqueID HAVING total>10 ORDER BY total DESC LIMIT 0, 10
  

Комментарии:

1. не могли бы вы ОПИСАТЬ таблицы sms и users, пожалуйста?

Ответ №1:

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

Вы могли бы сделать это таким образом:

 SELECT name
     , total
     , plus
     , minus
     , plus - minus
 FROM (
    SELECT users.name,
    count(*) as total, 
    SUM(sms.views)  SUM(sms.downloads)  (SELECT count(*) FROM `smsfb` WHERE     (`feedback`=1 OR     `feedback`=100) AND userid=users.uniqueID) AS plus,
    SUM(sms.delreq) (SELECT count(*) FROM `smsfb` WHERE (`feedback`=5 OR `feedback`=6)     AND     userid=users.uniqueID) AS minus
    FROM sms,users
    WHERE sms.deviceID=users.uniqueID
      AND sms.catid!=23 AND sms.catid!=44
      AND sms.catid!=45
      AND date>="2011-10-03" AND date<"2011-10-09" 
    GROUP BY users.uniqueID HAVING total>10 ORDER BY total DESC
    LIMIT 0, 10
 ) plusAndMinus
  

Из-за проблем с псевдонимами столбцов:

Вы можете использовать псевдоним в предложениях GROUP BY , ORDER BY или HAVING для ссылки на столбец

Комментарии:

1. ВСЕ та же ошибка! (Pl. Nt.: я скопировал ваш запрос как есть)

2. Извините, @Tajar, я забыл удалить plus-minus во внутреннем запросе. Попробуйте сейчас.

3. Спасибо! Очень полезно… узнал что-то новое, что требуется снова и снова!