2013-10-07 2 views
-3

У меня есть столбец db с именем «предупреждения» в таблице с именем «пользователи», где введены данные предупреждений для каждого пользователя;Получение уникальных данных из db

UserA -> 1,2,3,4,5,6 
UserB -> 33,44,22 
UserC -> 333,444,555 

Запятая отделенный номера PID (идентификатор сообщения)

Теперь я хочу, чтобы принести пользователей, имеющих определенный «PID», например, 444

Я использую этот запрос;

$query = $db->query("SELECT uid FROM users WHERE alerts LIKE '%{$pid}%'"); 
$uid = $db->fetch_array($query); 

Теперь проблема заключается в том, что она обеспечивает пользователей, но не уникальна. Например, если я ищу pid = 444, он извлекает всех тех пользователей, у которых «4» в столбце предупреждений. Как мне искать уникальных пользователей?

+1

Вы должны нормализовать эти данные. – Kermit

+1

Должна быть указана неделя недели muti-value. –

+0

Но почему -1? :/english - это мой второй язык, и, вероятно, поэтому я не смог правильно объяснить вопрос. – user2854563

ответ

3

использовать это:

$query = $db->query("SELECT uid FROM users WHERE FIND_IN_SET('{$pid}',alerts); 

FIND_IN_SET(str,strlist)

+0

Отличный ответ! Это работает :) – user2854563

+0

Теперь я не знаю, рад ли я, что это средство существует, или встревожено тем, что кто-то думал, что это должно произойти. :( –

0

Ну, если вы не можете исправить свой дизайн, чтобы избавиться от колонки с многозначной.

Как «4» или «4», или «%, 4», или как «%, 4», сделают это.

Теперь вы знаете, почему более опытные разработчики вздрагивают, когда они видят, кто-то сделал эту ошибку снова ...

Смежные вопросы