Задавайте вопросы, мы ответим
Вы не зашли.
помогите решить задачку пожалуйста
существует поле (id_users) в котором должны быть id пользователей через запятую (102,105,184)
как с помощью запроса UPDATE добавить или удалить определенный id?
Неактивен
только через строковые функции http://dev.mysql.com/doc/refman/5.5/en/ … tions.html
если есть возможность, лучше изменить структуру базы
Неактивен
По той ссылке что вы дали и по строковым функциям мне мало что понятно((
А что вы имеете ввиду по поводу другой структуры?
Неактивен
serj011 написал:
По той ссылке что вы дали и по строковым функциям мне мало что понятно((
с помощью этих функций вам нужно будет искать вхождение подстроки в строку, вырезать куски, склеивать их.. в общем мрак
serj011 написал:
А что вы имеете ввиду по поводу другой структуры?
в таких случаях используют вспомогательную таблицу (id_user, id), т.е.
5, 102
5, 105
5, 184
Тогда для добавления или удаления вы используете простой Insert или delete
Неактивен
Вообще изначально я так и хотел, я бы с такой структурой быстрее разобрался... но дело в том что этот модуль в таком исполнении предусматривает большое количество строк. я хочу реализовать систему лайков новостей пользователями. при количестве допустим 3000 пользователей, который лайкнут хотя бы по 200 новостей это уже будет 600000 тысяч строк. насколько это много и как лучше поступить?
Неактивен
преждевременная оптимизация - зло.
делайте отдельную таблицу, составной индекс, правильные типы данных (например, smallint или mediumint вместо int) и все будет летать
Неактивен
vasya, я буду вам очень признателен если вы за определенное вознаграждение поможете мне составить такую таблицу правильно. дело в том что я вообще очень далек от индексов, хотя и понимаю что это нужная вещи и ее нужно использовать. поможете?
Неактивен
что-то вроде
Неактивен
попытался почитать FAQ №5, и вообще в интернете про составные индексы и типы данных. честно говоря сложновато, наверное потому что практики не было.
vasya написал:
порядок полей в составном индексе зависит от того какие запросы будут в основном идти к этой таблице.
подразумевается
WHERE user_id='5' and news_id='100' или наоборот WHERE news_id='5' and user_id='100'
vasya написал:
типы данных зависят от размеров базы
если изначально у меня будет небольшая база от 100 строк, которые постепенно будут увеличиваться, нужно ли ставить такие типы данных?
vasya написал:
smallint unsigned от 0 до 65535
mediumint unsigned от 0 до 16млн
эти величины которые вы указали означают что в этой таблице не может быть больше строк чем максимальная определенного типа данных?
и тогда почему в одной таблице разные типы данных в двух полях?
Неактивен
serj011 написал:
vasya написал:
порядок полей в составном индексе зависит от того какие запросы будут в основном идти к этой таблице.
подразумевается
WHERE user_id='5' and news_id='100' или наоборот WHERE news_id='5' and user_id='100'
Нет, в таком случае порядок не важен.
Моя мысль была в том, что возможно удастся обойтись одним только составным индексом. Но можно этим не заморачиваться и использовать предложенный выше вариант.
serj011 написал:
vasya написал:
типы данных зависят от размеров базы
если изначально у меня будет небольшая база от 100 строк, которые постепенно будут увеличиваться, нужно ли ставить такие типы данных?
vasya написал:
smallint unsigned от 0 до 65535
mediumint unsigned от 0 до 16млнэти величины которые вы указали означают что в этой таблице не может быть больше строк чем максимальная определенного типа данных?
и тогда почему в одной таблице разные типы данных в двух полях?
К количеству строк это отношения не имеет. Речь идет о том какое максимальное число может храниться в данной ячейке.
Разные типы, потому что ткнув пальцем в небо, я предположил, что новостей будет больше чем пользователей, но меньше чем 16 млн.
Хватит ли для пользователей значений до 65тыс, решать вам. Лучше наверное и там и там сделать mediumint.
Неактивен
vasya написал:
К количеству строк это отношения не имеет. Речь идет о том какое максимальное число может храниться в данной ячейке.
а для чего тогда нужна длина значения?
smallint(5) mediumint(8) - вот такая длина значения была создана автоматически при создании таблицы
Неактивен
посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=2258
со smallint учтите, что если у вас счетчик пользователей станет больше чем 65535, то произойдет ошибка.
Неактивен
пока не все понятно, но будем продвигаться) спасибо)
Неактивен
vasya, у меня еще вопрос, как правильнее проверить существует ли запись если таблица такой структуры как вы предлагали
user_id = 100
news_id = 5
если бы в таблице был уникальный id, то я бы проверял
Неактивен
1. select 1 as id ...
или проверяйте количество возвращенных строк с помощью mysql_num_rows()
2. можно, но не очень понятно зачем зачем?
Неактивен
vasya написал:
1. select 1 as id ...
или проверяйте количество возвращенных строк с помощью mysql_num_rows()
vasya, если можно напишите пример запроса через mysql_num_rows()
vasya написал:
2. можно, но не очень понятно зачем зачем?
например, мне наверное будет нужно к этой таблице прикрутить отметку о просмотре пользователем что его статью лайкнули
Неактивен
$result = mysql_query("SELECT * FROM user_id='{$user_id}' and news_id='{$news_id}'", $link);
$num_rows = mysql_num_rows($result);
потом
if($num_rows == '1')
{
}
вот так?
Неактивен
вроде того, только замените * на 1
и зачем вы 1 берете в кавычки?
Неактивен
vasya написал:
вроде того, только замените * на 1
и зачем вы 1 берете в кавычки?
не знаю зачем, я думал так правильно) не нужно?
и по поводу дополнительных полей, если у меня будет в этом необходимость, сделать отметку как я писал, это будет правильно?
Неактивен
serj011 написал:
не знаю зачем, я думал так правильно) не нужно?
нет, num_rows возвращает число, а в качывках строка
serj011 написал:
и по поводу дополнительных полей, если у меня будет в этом необходимость, сделать отметку как я писал, это будет правильно?
юзер написал статью и ушел в лес.
его статья получила 10 лайков.
сколько должно быть отметок о том что пользователь не просмотрел, что его статью лайкнули?
Неактивен
vasya написал:
юзер написал статью и ушел в лес.
его статья получила 10 лайков.
сколько должно быть отметок о том что пользователь не просмотрел, что его статью лайкнули?
вы имеете в виду 1 или 10? я думаю 10, по типу как на одноклассниках
Неактивен