2011-02-15 6 views
0

Selectステートメントを取得しようとしていますが、名前フィールドを持つテーブル(区域)があります。別のテーブルのテキストフィールドに含まれています。 このようなものです。別のテーブルのテキストフィールドに一致する場合にのみ、名前のセットを返す必要があります

SELECT name FROM districts,users 
WHERE users.accesslist LIKE '"%"+districts.name+"%"' 

これは空のリストを返します。

私は特定の名前を使用するとそれを得ることができます%Swindon%それは間違っている私の連結ですか?

答えて

0

そうです。使用CONCAT("%", districts.name, "%")

0

テーブル間に何らかの関係を指定する必要があります。今のところ、2つのテーブルから選択していますが、そのうちの1つだけに条件を指定しています。

SELECT name 
FROM districts, users 
WHERE users.accesslist LIKE '%{$district_name}%' AND districts.name = users.district 

である。あなたはテーブルレイアウトを指定していませんが、2つのテーブルの間に共通のフィールドが必要です。それらは結合条件を指定するものです。

また、クエリに構文エラーがあります。 LIKE句内の二重引用符は存在してはいけません。

+0

今、LIKE節全体を一重引用符で囲みました。つまり、MYSQLは、 '%'シンボルと連結するフィールド名として '+ district.name +'を見ることはできません - それはリテラルテキストとして扱われます。 concat( '%'、district.name、 '%') ' - MySQLは連結に' + 'を使用せず、CONCAT()関数を使用します。 –

0

テーブルスキーマ(プライマリ/外部キー)を知らなくても、サブクエリはそれを実行する必要があります。しかし、それは恐ろしいです。あなたがテーブルスキーマを使うことができれば、私たちはあなたに何かを与えることができます。

これは、ユーザーがいる場合、すべての地区の名前を返します。

SELECT name 
FROM districts AS d 
WHERE d.name = SELECT name FROM users AS u 
0

LIKE '%例%' コマンドのリターン '%例' コマンドの戻りLIKE ... AAExampleBB ... などのすべての分野... AAExample LIKE '例' コマンドの戻りのようなすべてのフィールドのようなすべてのフィールド例 REGEX '^ Example $'も使用できます。

関連する問題