Сравните значение с запятыми в строке SQL
Я использую двухуровневые блоки выбора на моей веб-странице для фильтрации данных... У меня проблема с моим запросом для вторых значений выбора...
Таблица:
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
Теперь я хочу сделать запрос, который выбирает все те области, которые имеют одинаковое значение кошки, которое мы выбираем в первом поле, например, если я выбрал "resort" из первого выбора, он выбрал "mall road" для второго поля... и в случае, если я выбрал " Банкетный зал ", тогда следует выбрать" Молл роуд "и" Паховал роуд "и так далее.
Я также использовал запрос для этого, но он не работает должным образом для меня...
Второй запрос окна выбора:
SELECT DISTINCT loc
from table
WHERE cat = '$_POST[cat]' AND loc IS NOT NULL
Он дает правильный вывод только для "курортных" и "гостиничных" кошек.... если я выбрал "фермерский дом" или "банкетный зал", он не выдает "паховальскую дорогу"...
Как я могу изменить свой запрос для достижения этого...?
1 ответ
Попробуй это:
SELECT DISTINCT loc
FROM [YourTable]
WHERE INSTR(CONCAT(', ',cat,' ,'),CONCAT(', ','$_POST[cat]',' ,'))>0 AND loc IS NOT NULL