【问题标题】:Compare Value with Comma Separated String SQL PHP将值与逗号分隔的字符串 SQL PHP 进行比较
【发布时间】:2017-04-20 20:59:26
【问题描述】:

我在网页上使用双层链接选择框来过滤数据...我在查询第二个选择值时遇到问题...

表:

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 猫值...这对我来说非常有用...

我正在使用的查询是:

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 值的区域,例如如果我从第一个选择中选择“resort”,它为第二个框选择了“mall road”...以防万一我选择了“宴会厅”,那么应该选择“mall road”和“pakhowal road”等等。

我也为此使用了查询,但它对我来说无法正常工作...

二次选择框查询:

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

它只为“度假村”和“酒店”猫提供正确的输出......如果我选择“农舍”或“宴会厅”,它不会获取“pakhowal 路”......

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

【问题讨论】:

  • 附带说明,在查询中使用之前,请务必使用 PDO 或至少清理您的输入。直接插入 $_POST 变量一直是不好的做法。

标签: php mysql sql concat chained-select


【解决方案1】:

试试这个:

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

【讨论】:

  • @Ashish,你有什么错误吗??如果没有,您可以分享结果和预期结果。
  • @Ashish 第二次选择??你的意思是ds ??
  • nops 先生...首先选择获取猫并基于该选择第二次选择获取位置...在选择猫后使用此查询我的第二次选择不显示任何位置...。表示我从 cat....loc 中选择的任何内容都为空...
  • @Ashish 所以你想用第一个查询的结果来过滤第二个查询的数据,对吧??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
相关资源
最近更新 更多