2012-01-27 37 views
7

Tôi không thể tìm ra lý do tại sao tôi nhận được cột không xác định khi cột là bí danh được tạo. Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời.Vấn đề cột không xác định với bí danh mysql

mã:

SELECT DISTINCT 
    c.id, 
    ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
    ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
    FROM carpets AS c 
    WHERE c.active = '1' 
    AND (width BETWEEN '0' AND '275') 
    AND (height BETWEEN '0' AND '599') 
    ORDER BY c.item_no 

lỗi:

Unknown column 'width' in 'where clause'

Trả lời

10

Bạn không thể truy cập bí danh trực tiếp theo tên.

Một giải pháp là để bọc các truy vấn với các bí danh trong một subquery, và sau đó tham khảo các tên bí danh trong một truy vấn bên ngoài:

SELECT DISTINCT * 
FROM 
    (
    SELECT c.id, 
      ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
      ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
    FROM carpets AS c 
    WHERE c.active = '1' 
    ) sub 
WHERE (sub.width BETWEEN '0' AND '275') 
AND (sub.height BETWEEN '0' AND '599') 
ORDER BY sub.item_no 
+0

không hợp lệ, tuy nhiên hiện tại không có kết quả khi hiển thị kết quả 1046 .... bất kỳ ý tưởng nào –

+0

@Nate - Truy vấn bên trong có truy xuất không bất kỳ kết quả nào? Và nếu như vậy, là chiều rộng và chiều cao trong giới hạn bạn đang kiểm tra? –

+0

@Nate - Tôi cũng đã chuyển 'DISTINCT' sang bên ngoài' SELECT'. Điều đó có thể đã gây ra vấn đề là tốt. –

0

Tôi không nghĩ rằng bạn có thể sử dụng của bạn "width" bí danh trong bạn "width giữa .. và .."; bạn cần lặp lại tính toán thô, thật đáng buồn. Tương tự cho "chiều cao". Vì vậy, những điều sau đây sẽ hoạt động:

SELECT DISTINCT c.id, 
     ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
     ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
FROM  carpets AS c 
WHERE c.active = '1' 
AND  (((SUM(c.width_feet)*12)+(SUM(c.width_inches))) BETWEEN '0' AND '275') 
AND  (((SUM(c.height_feet)*12)+(SUM(c.height_inches))) BETWEEN '0' AND '599') 
ORDER BY c.item_no 
+1

khi cố gắng tôi nhận được lỗi: Sử dụng chức năng nhóm –

6

Bạn có thể sử dụng bí danh theo thứ tự quy định tại khoản, nhưng bạn có thể không sử dụng bí danh trong mệnh đề where hoặc group by. Hoặc bạn lặp lại biểu thức hoặc bạn có thể sử dụng truy vấn phụ.

Các vấn đề liên quan