Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск по таблице

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
allasan
Отправлено: 10 Января, 2014 - 12:15:33
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Здравствуйте.
Кратко о проблеме: есть в базе строка "2,45,85,33,22,25", как при помощи LIKE определить есть ли в этой строке "2"?
LIKE '%2%' не подходит, т.к. это условие не учитывает разделение запятой и среагирует на ",22,".
т.е. как построить запрос LIKE, чтобы он нашел число, окруженное запятыми с обеих сторон, либо только с одной стороны, либо вообще не окружен?

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

Заранее спасибо!

(Отредактировано автором: 10 Января, 2014 - 12:25:47)

 
 Top
DelphinPRO
Отправлено: 10 Января, 2014 - 12:27:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




нужно использовать связку двух таблиц. а не хранить идентификаторы через запятую в одном поле.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
allasan
Отправлено: 10 Января, 2014 - 12:34:11
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
нужно использовать связку двух таблиц. а не хранить идентификаторы через запятую в одном поле.


Нет нужно именно так. Объясню на примере. Есть статья, статья принадлежит нескольким городам, IDшники городов находятся в поле gorod таблицы statya.
 
 Top
IllusionMH
Отправлено: 10 Января, 2014 - 12:46:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




allasan, это не так нужно, это так криво реализовано!
Если не ходите сделать по-человечески - 12[dot]5[dot]2[dot] Regular Expressions
 
 Top
Мелкий Супермодератор
Отправлено: 10 Января, 2014 - 12:49:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Использовать нормальную внешнюю таблицу отношений.

allasan пишет:
Нет нужно именно так.

Докажите.
Так как у вас - не делается.


-----
PostgreSQL DBA
 
 Top
SAD
Отправлено: 10 Января, 2014 - 12:50:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




добавляете слева и справа по запятой и LIKE '%,2,%'
если, конечно, не хотите сделать правильно, как Вам предлагают

так как это айдишники, то однозначно правильно делать таблицу связей

(Отредактировано автором: 10 Января, 2014 - 12:52:43)

 
 Top
imya
Отправлено: 10 Января, 2014 - 13:02:07
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




allasan пишет:
вокруг искомого теста может быть либо запятая, либо ничего




?
Неккоректно, судя по архитектуре, но если Вы не хотите перерабатывать её, попробуйте такой вариант.

(Отредактировано автором: 10 Января, 2014 - 13:03:15)



-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
allasan
Отправлено: 10 Января, 2014 - 13:13:21
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Странно, но я везде видел что делается именно так. В самых популярных скриптах.
А что за таблица связей?
 
 Top
IllusionMH
Отправлено: 10 Января, 2014 - 13:22:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




allasan пишет:
Странно, но я везде видел что делается именно так.

allasan, пруф или не было. Ни в одной нормальной системе не будут городить такую фигню. вместо нормальной организации связи 1-к-многим, многие-к-многим.
Загляните в любимый поисковик с словами выделенными курсивом

(Отредактировано автором: 10 Января, 2014 - 13:23:09)

 
 Top
Мелкий Супермодератор
Отправлено: 10 Января, 2014 - 13:30:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Есть:
таблица1 чего-то, имеет id
таблица2 чего-то другого, тоже имеет свой id (tid, чтобы не путаться).
Цель: сделать множественные связи между ними.
Решение:
Создать таблицу связей, включающую в себя всего 2 поля: id из, соответственно, обеих таблиц. Уникальный ключ на оба поля (при необходимости, такой же ключ с обратным порядком полей)
Одна строка в таблице - одна однозначная связь.


-----
PostgreSQL DBA
 
 Top
allasan
Отправлено: 10 Января, 2014 - 14:17:34
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Не, это все слишком усложняет и влечет за собой много переделок уже готового, вобщем всем спасибо, думаю сделаю по другому
 
 Top
Мелкий Супермодератор
Отправлено: 10 Января, 2014 - 14:22:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Это всё упрощает и кардинально улучшает производительность поиска по связям.
Много переделывать - да, застарелые костыли всегда сложно выпиливать.


-----
PostgreSQL DBA
 
 Top
DelphinPRO
Отправлено: 10 Января, 2014 - 14:44:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




allasan пишет:
и влечет за собой много переделок уже готового,

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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB