|
|
|
| Доброго времени суток!
Проблема вот в чем.
Имеется, к примеру, в таблице с новостями столбец "vote_plus", в котором записаны через запятую пользователи, оценившие данную новость положительно: "Петя, Ваня, arnold_232, Маня".
И вот, нужно добавить нового пользователя.
Суть вопроса: возможно ли как-то так сделать, чтобы добавление происходило в одном запросе, без предварительного SELECT `vote_plus` FROM... с последующим UPDATE...?
Спасибо! | |
|
|
|
|
|
|
|
для: Deed
(24.07.2012 в 08:38)
| | >возможно ли как-то так сделать, чтобы добавление происходило в одном запросе...
Возможно, для этого выбросить к черту поле несущее вот такое - "Петя, Ваня, arnold_232, Маня",
и создать таблицу связей id проголосовавших пользователей c id новостей. | |
|
|
|
|
|
|
|
для: confirm
(24.07.2012 в 08:43)
| | Ага... Спасибо!
А какая структура таблицы будет?
(Сейчас нашел и буду читать, что такое вообще, эти таблицы связей. Больно не пинайте!) | |
|
|
|
|
|
|
|
для: Deed
(24.07.2012 в 09:04)
| | А какая структура таблицы будет?
идентификатор новости | идентификатор пользователя
|
всего два поля в таблице
первичный ключ на оба поля | |
|
|
|
|
|
|
|
для: Valick
(24.07.2012 в 09:42)
| | Пытаюсь уяснить картину в целом... Но... Но, ведь, тогда эта таблица будет невероятной длины!! | |
|
|
|
|
|
|
|
для: Deed
(24.07.2012 в 12:00)
| | >Но, ведь, тогда эта таблица будет невероятной длины!!
И что? Ваша строка была бы в любом случае намного длиннее, а в этой строке надо еще разбираться кто есть кто. | |
|
|
|
|
|
|
|
для: confirm
(24.07.2012 в 12:08)
| | Здравствуйте, уважаемый confirm.
Если Вас не затруднит, как будет выглядеть выборка и добавление конкретного факта голосования конкретного пользователя в конкретной новости?
Прошу Вас, расскажите об этом!
Заранее благодарю. | |
|
|
|
|
|
|
|
для: Deed
(24.07.2012 в 14:29)
| | Добавление данных в таблицу производится оператором
INSERT INTO table VALUES(id_news, id_user)
а для конкретики факта, конкретной новости и конкретного пользователя, укажите свои конкретные данные.
Выборка из таблицы производится оператором SELECT, но выборка может быть непосредственно из этой таблицы, а может быть как вложенный запрос при выводе новостей. Чего вам надо я не знаю, а посему никакой конкретики прописывать не буду.
В этом разделе примеров добавлений/выборки столько, что их можно засушить на приличный гербарий. Или вам надо писать отдельно, чтобы имя таблицы вашей было, имена полей ваших, значения данных, иначе трудно воспринимаются такие примеры? | |
|
|
|
|
|
|
|
для: confirm
(24.07.2012 в 15:00)
| | Спасибо. Я понял идею. Это, что-то связано с UNION, вероятно. В смысле, одним запросом при выводе новости. Хорошо. Еще раз спасибо! Буду собирать гербарий. | |
|
|
|
|
|
|
|
для: Deed
(24.07.2012 в 17:23)
| | Нет, не UNION, а JOIN. Я имел ввиду, что при выводе новостей вам нужно получить и вывести еще, например, количество голосов поданных за новость. | |
|
|
|
|
|
|
|
для: Deed
(24.07.2012 в 08:38)
| | Содержимое поля "Петя, Ваня, arnold_232, Маня" - это крайне неестественно для реляционной базы данных. Поле должно содержать только одну сущность и каждая ячейка должна содержать только одно значение. Ситуации с "Петя, Ваня, arnold_232, Маня" допустимы только в определенных случаях когда требуется денормализация и являются вспомогательными данными (т.е. не отменяют хранения этих данных в нормализованном виде). Не так давно я предлагал такую идею для вывода тэгов к статьям, для избавления от циклов при выборке. Единственное условие нужно синхронизировать актуальность этого вспомогательного поля при добавлении, удалении или изменении тэгов.
Почитайте про нормализацию таблиц (нормализация БД) | |
|
|
|
|
|
|
|
для: Valick
(24.07.2012 в 09:40)
| | Спасибо! Я все понял, прочитав о нормализации здесь: http://www.softtime.ru/bookphp/gl12_6.php, за что моя благодарность cheops'y! | |
|
|
|