У меня есть ученики таблиц, содержащие данные, подобные приведенным ниже:
id name activity
1 susan 1,2
2 denny 1,2,3
3 ken 3
Я хочу выбрать все данные, такие как имя и идентификатор из этой таблицы, имеющие активность, равную 2. Я выполнил sql-запрос, используя, но это не сработает.
$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE activity LIKE '%$activity'");
Если в другой строке содержатся такие данные, как id: 4 name:ben activity: 22
она также покажет эту строку. Мне нужны строки, содержащие только активность 2.
Может ли кто-нибудь предложить решение для этого?
Я согласен с комментариями до сих пор о нормализации данных, но чтобы ответить на ваш вопрос с помощью структуры таблицы, так как вы можете это сделать:
$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE CONCAT(',',activity,',') LIKE '%,$activity,%'");
Обратите внимание, что вы объединяете запятую с каждой стороны полевых данных и конкретную деятельность, которую вы ищете. Также обратите внимание: я добавил% от права на подобное, чтобы так, чтобы "denny" был пойман
SELECT id, studentname
FROM students
WHERE FIND_IN_SET("$activity", activity);