У меня есть таблица с этим форматомMySQL разделенные запятой поля запроса
name char
password char
ips char
lastAction timestamp
Пример:
SELECT * FROM XXXX LIMIT 0,1;
| name | password | ips | lastAction |
| Dixon | encripted password here | 190.31.xx.xxx,201.252.xx.xxx,190.137.xx.xxx | 2013-08-03 14:27:38 |
То, что я хочу сделать, это найти имя, узнать ИПС, что имя присвоенные и поиск имен, содержащих хотя бы одно значение этого списка разделенных запятыми списков IP-адресов. Проблема, с которой я сталкиваюсь, состоит в том, что это список, разделенный запятыми.
Что я сделал в Баш до сих пор (опуская unnecesary части):
mysql -h host -uroot -ppassword database -e "SELECT ips FROM crazylogin_accounts WHERE name = '$nombre'" > multi.log
cat multi.log | tr ',' '\n' > ip.log
cat multi.log | sed 's/,/ /g' | tr ' ' '\n' > ip.log
while read line
do
mysql --table -h host -uroot -ppassword database -e "SELECT name as Nombre, lastAction as UltimaAccion FROM xxxxx WHERE ips like '%$line%'" >> user.log
done < ip.log
Проблема с этим состоит в том, что он не оптимизирован вообще. Некоторые пользователи имеют около 10 значений или более, и это генерирует 10 запросов. Другая проблема - форматирование, я хотел иметь только один результат, созданный с использованием таблицы. И третья проблема заключалась бы в том, что, видя, что, повторяя результаты, я не смог бы повторного поиска каждого результата (поиск каждого результата снова для пользователей с хотя бы одним общим ip)
Любые намеки на право путь будет оценен. Большое спасибо!