Помогите с sql запросом

rasandrey

Участник
Регистрация
2 Апр 2009
Сообщения
214
Реакции
6
Не знаю как правильно сделать. В таблице saloni есть поле marka(varchar), в нем находится значение
Код:
123,654,12,1,2,78

У меня есть GET параметр marka - значиние int (т.е. числовое значение).

Нужно из таблицы saloni выбрать все записи, где $_GET['marka'] есть хотя бы в одном поле "marka".

Вижу это так:

Код:
select * from saloni where marka like
и тут должно быть правило, которое выберет значение из поля, у которого спереди и сзади нету числового значения. Т.е. может быть пустой символ или запятая.
 
Не очень понятно, что надо, но на первый взгляд база денормализована и должна быть дополнительная таблица связей салон->марка из которой и нужно делать выборку
 
что не понятного? У меня есть такая свзять, но id марок в таблице saloni лежат через запятую. Вот здесь и нужно выбрать записи, в поле marka которых есть этот GET параметр
 
Все понял. Нужна отдельная таблица. Но если она невозможна, то надо смотреть в сторону
SELECT ... REGEXP
И регулярку подобную (?:^|,)число(?:,|$)

не могу проверить. Машина глючит.
 
решил таким сопособ
Код:
   select * from saloni where marka like '123,%' or marka like '%,123' or marka like '%,123,%' or marka = '123'
 
  • Заблокирован
  • #6
Если через запятую то вот запрос

PHP:
SELECT * FROM table WHERE marka regexp '[[:<:]](" $_GET['marka']  ")[[:>:]]'

Единственное что с кавычками поиграйте, не помню какие где ставить...

ПС Мой запрос будет работать на много быстрее чем ваш...
 
Имеет смысл хранить список в таком виде: ,123,654,12,1,2,78, и ограничиться одним условием " LIKE '%,".$_GET['marka'].",%'" будет быстрее чем regexp.
 
Нету необходимых постов, по этому пишу в похожей теме.

Есть таблица comments
в каждой строке есть rating, со значениями 1, 2, 7, -1, -6 и так далее

нужно общее число рейтинга со всех записей. То есть общая сумма - 1+2+7-1-6=3 (только там значений больше :D )

Вот что я пробовал

PHP:
$db->query("select count(distinct rating) from comments WHERE user_id=1");
но выводит какой то бред :bc:
 
  • Заблокирован
  • #9
Нету необходимых постов, по этому пишу в похожей теме.
Есть таблица comments
в каждой строке есть rating, со значениями 1, 2, 7, -1, -6 и так далее
нужно общее число рейтинга со всех записей. То есть общая сумма - 1+2+7-1-6=3 (только там значений больше :D )
Вот что я пробовал
PHP:
$db->query("select count(distinct rating) from comments WHERE user_id=1");
но выводит какой то бред :bc:

Говорю по личному опыту, если проект у вас хоть не много посещаемый, то получите огромную нагрузку на базу данных, есть смысл хранить рейтинг пользователя в базе и менять его при изменении рейтинга новости
 
подскажите пожалуйста, в разных скриптах при составлении SQL запроса название таблицы, столбца и сами значения заносятся в кавычки '' или ``, а в некоторых вообще не указываются. Для чего это нужно и влияет ли как то на безопасность? спасибо.
 
Назад
Сверху