MySQL
表:都市
+----+----------+
| id | city |
+----+----------+
| 1 | New York |
+----+----------+
表:ステーション
+----+--------------+---------+
| id | name | city_id |
+----+--------------+---------+
| 1 | Woodlawn | 1 |
+----+--------------+---------+
| 2 | Mosholu Pkwy | 1 |
+----+--------------+---------+
PHP
$string = mysql_real_escape_string('woodlawn new york');
$a = mysql_query("
SELECT s.id FROM cities AS c, stations AS s
WHERE CONCAT_WS(' ', s.name, c.city) LIKE '%$string%' AND c.id = s.city_id
");
while($b = mysql_fetch_assoc($a))
{
echo $b['id'];
}
問題
ただし、上記の例は、次の検索を実行すると正常に機能します。
$string = mysql_real_escape_string('mosholu new york');
mosholu pkwy new yorkを明示的に検索しない限り、結果は0になります。
可能なオプション?
もちろん、FULLTEXT
検索をと組み合わせて使用することはできませんCONCAT_WS
。cities
また、テーブルの構造をそのままにして、テーブルを1つ、テーブルを1つ用意したいと思いますstations
。
では、駅名と都市名を含む4番目の列をstations
テーブルに追加して、それを検索する唯一のオプションはありますか?FULLTEXT
stations
しかし、たとえば都市名を更新してから、テーブル内のすべての行についても変更する必要がある場合は、お尻が痛くなるだけです。