1

Web ページで 2 層チェーン選択ボックスを使用してデータをフィルタリングしています...2 番目の選択値のクエリに問題があります...

テーブル:

id     name      cat                        loc

1      ABC       resort                     mall road
2      BCD       banquet hall               mall road
3      CDE       farm house, banquet hall   pakhowal road
4      DEF       hotel                      ferozpur road
5      FEZ       hotel                      fountain chowk
6      ZEX       resort                     mall road

最初の 1 つは DISTINCT cat 値用の 2 つの選択ボックスがあります...これは私にとって完璧に機能しています...

私が使用しているクエリは次のとおりです。

select distinct cat from 
(select  trim(substring_index(substring_index (concat(cat,',,'),',',n),',',-1)) 
as cat from table t 
cross join (select 1 as n union all select 2 union all select 3) r) t 
where  cat <> '' ORDER BY cat ASC

出力:

cat

banquet hall
farm house
hotel
resort

ここで、最初のボックスで選択したのと同じ猫の値を持つすべてのエリアを選択するクエリを作成したいと思います宴会場」の場合、「モールロード」や「パクホワールロード」などを選択する必要があります。

これにもクエリを使用しましたが、適切に機能していません...

2 番目の選択ボックス クエリ:

SELECT DISTINCT loc 
from table 
WHERE cat = '$_POST[cat]' AND loc IS NOT NULL

「リゾート」と「ホテル」の猫だけに正しい出力が得られます....「ファームハウス」または「バンケットホール」を選択した場合、「パクホワルロード」は取得されません...

これを達成するためにクエリを変更するにはどうすればよいですか...

4

1 に答える 1

2

これを試して:

SELECT DISTINCT loc
FROM [YourTable]
WHERE INSTR(CONCAT(', ',cat,' ,'),CONCAT(', ','$_POST[cat]',' ,'))>0 AND loc IS NOT NULL 
于 2016-12-06T09:35:33.420 に答える