SQL查询错误 - 需要新鲜的眼睛

时间:2011-01-14 16:18:00

标签: sql mysql mysql-error-1064

好的,首先,我正在构建一个查询来搜索以MySQL数据库形式提供的MLS数据,所以我无法控制数据格式,因此我相信我必须做一个大量的转换以便以可管理的形式获取数据。 SQL错误正在消失。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your   
MySQL server version for the right syntax to use near ' DECIMAL(2, 1)) / .5, 
CAST(idx1.full_baths, DECIMAL(2, 1))), DECIMAL(2, 1)) AS b' at line 1

查找错误代码并将其发送到保留字页面,但我无法识别任何保留字。

现在是sql

(所有字段均为VARCHAR

SELECT  idx_common.mls_no AS mls_no, 
        CONCAT_WS(" ", idx_common.street_no, idx_common.street_direction, idx_common.street_name) AS address, 
        idx_common.city AS city, 
        idx_common.state AS state, 
        idx_common.total_sqft AS total_sqft, 
        idx_common.asking_price AS price, 
        idx1.bedrooms AS bedrooms, 
        CAST(
            SUM(
                (CAST(idx1.half_baths, DECIMAL(2, 1)) / .5), 
                CAST(idx1.full_bath, DECIMAL(2, 1))
            ), 
            DECIMAL(2, 1)
        ) AS bathrooms, 
        idx1.residential_prop_type AS type, 
        "Listing Agent" AS agent 

FROM (idx_common) 
JOIN idx1 ON idx_common.mls_no = idx1.mls_no 

WHERE `idx_common`.`mls_no` = 'query' 
OR idx_common.zip LIKE '%query%' 
OR idx_common.city LIKE '%query%'

4 个答案:

答案 0 :(得分:3)

SUM()只接受一个参数。你有SUM(演员(...),演员(...))

我认为你打算做+,而不是SUM   (CAST(idx1.half_baths,DECIMAL(2,1))/ .5) +    CAST(idx1.full_bath,DECIMAL(2,1))

SUM添加整个表中列的所有值。您只能在GROUP BY查询中使用它。

答案 1 :(得分:3)

我相信你根本不需要SUM

SELECT  idx_common.mls_no AS mls_no, 
        CONCAT_WS(" ", idx_common.street_no, idx_common.street_direction, idx_common.street_name) AS address, 
        idx_common.city AS city, 
        idx_common.state AS state, 
        idx_common.total_sqft AS total_sqft, 
        idx_common.asking_price AS price, 
        idx1.bedrooms AS bedrooms, 
        CAST(idx1.half_baths AS DECIMAL(2, 1)) * .5 +
        CAST(idx1.full_bath AS DECIMAL(2, 1)) AS bathrooms, 
        idx1.residential_prop_type AS type, 
        "Listing Agent" AS agent 
FROM    idx_common
JOIN    idx1
ON      idx_common.mls_no = idx1.mls_no 
WHERE   `idx_common`.`mls_no` = 'query' 
        OR idx_common.zip LIKE '%query%' 
        OR idx_common.city LIKE '%query%'

我还将/ 0.5更改为* 0.5,因为它似乎更适合此查询。

如果公寓有3个半浴室和2个完整的浴室,此查询将输出(3 / 2) + 2 = 3.5个浴室。

这是你想要的吗?

答案 2 :(得分:2)

我认为函数CAST适用于AS,而非","。像这样:

CAST(idx1.half_baths AS DECIMAL(2, 1))

您需要在所有CAST上替换它。

答案 3 :(得分:1)

确保您的MYSQL版本是> 5.0.8。在此版本之前,DECIMAL类型未添加到CAST函数中。