2011-01-14 3 views
3

最初は、MySQLデータベースの形式で提供されているMLSデータを検索するクエリを作成しています。したがって、データフォーマットを制御できません。私は管理しやすい形でデータを得るために多くの鋳造をしなければならないと信じています。 SQLエラーが発生しています。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 

エラーコードを探して予約語ページに送信しますが、予約語は識別できません。

私は AS、ない ","で動作 CAST機能と信じ

となりまし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%' 
+1

CASTがありますが、[CONVERTのパラメータ形式](http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html)を使用してください。さらに、GROUP BYのない集合体は、任意の結果を返す可能性があります。 –

答えて

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

。このように:

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

すべてのCASTで置き換える必要があります。

3

SUM()は単一の引数をとります。

あなたは+を意味すると思いますが、SUM ではありません(CAST(idx1.half_baths、DECIMAL(2,1))/ .5 )+ CAST(idx1.full_bath、DECIMAL(2,1))

SUMは、テーブル全体の列のすべての値を加算します。 GROUP BYクエリでのみ使用できます。

+0

助けてくれてありがとう、それも問題でした。 – jondavidjohn

1

MYSQLのバージョンが> 5.0.8であることを確認してください。 DECIMAL型は、このバージョンまではCAST関数に追加されませんでした。

+0

おかげで、ありがとう – jondavidjohn

関連する問題