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