2011-10-16 3 views
5

Trong khi sử dụng truy vấn sau đây, tôi nhận được lỗiLỗi "# 1054 - Cột không xác định" khi bí danh được sử dụng cùng với truy vấn?

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

khi plus-minus được sử dụng. Nếu không, truy vấn sẽ chạy tốt. Tôi đoán có một cái gì đó liên quan đến bí danh mà tôi không biết làm thế nào để sử dụng. Xin hãy hướng dẫn!

Cảm ơn.

Query:

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

bạn có thể MÔ TẢ các bảng người dùng và sms không? –

Trả lời

9

Bạn không thể sử dụng bí danh của một cột bên trong phần chọn của truy vấn.

Bạn có thể làm điều đó theo cách này:

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 

Từ Problems with Column Aliases:

Bạn có thể sử dụng bí danh trong GROUP BY, ORDER BY, hoặc điều khoản HAVING để tham khảo các cột

+0

VẪN chính xác lỗi tương tự! (Plt Nt .: Tôi copy-paste truy vấn của bạn vì nó là) – BufferStack

+0

Xin lỗi @Tajar, tôi quên xóa 'plus-minus' trong truy vấn bên trong. Thử ngay bây giờ. – DavidEG

+0

Xin cảm ơn! Nhiều Hữu ích ... học được điều gì đó mới mẻ được yêu cầu nhiều lần! – BufferStack