MYSQL+PHPで困っています。


データにはIDと住所を3列に分けて、
idにid
aaaに県名
bbbに市区名
cccに町村名
を入れています。

仮に東京都渋谷区恵比寿がデータに入っています。

それで、

SELECT *
FROM addr
WHERE `aaa` LIKE ’%Z%’ || `bbb` LIKE ’%Z%’ || `ccc` LIKE ’%Z%’
ORDER BY id ASC

としてみたのですが、これだと「東京都」や「渋谷区」などではうまく動いているのですが、
「東京都渋谷区」で行うと、それぞれの列には「東京都渋谷区」では登録されてないので、駄目っぽいです。

どのような解決法がありますでしょうか?
グループ化かなと思いましたが、よく分かりませんでした。

素人なので、上記コードを変更してもらえればありがたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/02/09 16:37:09
  • 終了:--

回答(1件)

id:birdie-brain No.1

birdie-brain回答回数40ベストアンサー獲得回数42006/02/09 17:06:39

ポイント50pt

http://dev.mysql.com/doc/refman/4.1/ja/string-functions.html

MySQL 4.1 リファレンスマニュアル :: 6.3.2 文字列関数

各要素に分解する前の住所に対して検索したければ、住所を連結してしまえばよいのです。

具体的には、CONCAT()関数を使って、このように記述します。


SELECT *

FROM addr

WHERE CONCAT(`aaa`, `bbb`, `ccc`) LIKE ’%Z%’

ORDER BY id ASC

id:haring

うおー

出来ました。助かりました。

2006/02/09 17:15:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません