2017-03-15 1 views
1

プロジェクトでは、クライアントからデータベースを取得しました。このデータベースには、ポイントで区切られた連結された複数の単語で構成された属性を持つテーブルが含まれています。 exemple:テーブルに、ポイントで区切られた複数の単語で構成された属性が含まれている場合にSQLを要求します。

table A : id, number.client , global.score 
table B : id, favorite.style 

私はexempleためnumber.clientに応じて結果をフィルタリングするフィルタリングするには、この表に対してSQLリクエストを行うときに、私は、MySQLによって返されたエラーを持っています。 exempleについては

私はこの要求を持っている:私はこの要求を実行すると

SELECT * FROM A 
INNER JOIN B 
ON (A.ref_track = B.id) 
INNER JOIN C 
ON (C.id = B.ref_plannode) 
WHERE (B.id= 1) 
AND (A.number.client > 50) 
ORDER BY A.id DESC 

私はこのエラーを取得する:

MySQL replied: 
#1064 - Syntax error on A.number.client > 50 

私たちは作曲属性を持っている場合、MySQLは失敗していないと思います点で区切られた単語をセーヴします(number.clientなど)。だから解決策は何ですか?

このデータベースは私の責任ではなく、クライアントから入手しました!!

答えて

2

あなたは、列名は、角括弧の間に入れて引用してみます "`"

SELECT * 
FROM A 
JOIN B 
ON  A.ref_track = B.id 
JOIN C 
ON  C.id = B.ref_plannode 
WHERE B.id= 1 
     AND A.`number.client` > 50 
ORDER BY A.id DESC 

編集

Working example

+0

の設定についての詳細を知ることができ、あなたはそれが仕事をdoes'nt –

0

と列名を引用する必要があります。 だから

AND (A.[number.client] > 50) 
+0

非常に感謝..: このコマンドで設定を表示することができます –

1

空白ことを、あなたはこれを使用することができ、同じケースである:

SELECT * FROM A 
INNER JOIN B 
ON (A.ref_track = B.id) 
INNER JOIN C 
ON (C.id = B.ref_plannode) 
WHERE (B.id= 1) 
AND (A.`number.client` > 50) 
ORDER BY A.id DESC 

MySQLがdiferent引用符やbraquetsを使用することができ、設定に依存。 MySQLサーバは異なるSQLモードで動作することができ、sql_modeシステム変数の値に応じて、異なるクライアントに対して異なるモードを適用することができます。

SELECT @@GLOBAL.sql_mode; 
SELECT @@SESSION.sql_mode; 

を、あなたはそれが完璧に動作し、ここでのmysql https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi_quotes

関連する問題