将值与逗号分隔字符串SQL PHP进行比较

时间:2016-12-06 09:16:14

标签: php mysql sql concat chained-select

我在我的网页上使用双层链式选择框来过滤数据...我的第二个选择值的查询有问题......

表:

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

我有两个选择框,其中第一个用于DISTINCT cat值...这对我来说非常有用......

我正在使用的查询是:

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

现在我想做一个查询,选择我们在第一个框中选择的具有相同cat值的所有区域,就像我选择&#34; resort&#34;从第一次选择它选择&#34; mall road&#34;第二个盒子......如果我选择&#34;宴会厅&#34;然后它应该选择&#34; mall road&#34;和&#34; pakhowal road&#34;等等。

我也使用了一个查询,但它对我不起作用......

第二个选择框查询:

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

它为&#34; resort&#34;提供了正确的输出。和&#34;酒店&#34;只有猫....如果我选择&#34;农庄&#34;或&#34;宴会厅&#34;它没有取得&#34; pakhowal road&#34; ...

如何更改查询以实现此目的??

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT DISTINCT loc
FROM [YourTable]
WHERE INSTR(CONCAT(', ',cat,' ,'),CONCAT(', ','$_POST[cat]',' ,'))>0 AND loc IS NOT NULL