[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: добавление id товара в одно поле
kuzroman
Подскажите, как обновлять базу оптимальнее?

например таким запросом:
пример 1)
UPDATE `stats` SET `nofrom`=`nofrom`+1 WHERE `date`='$date'

Я обновляю поле nofrom на 1 после каждого выполнения этого кода.

поле nofrom (INT) здесь все понятно. От сюда вопрос можно ли делать !примерно! то же самое с полем, тип которого - TEXT (или какое еще?)

Например мне нужно в поле tovar(text) добавлять id какого то товара через запятую.
реально ли это сделать без двойного запроса?

т.е. я всегда сначала обращаюсь в базу (select) выбираю строку с полем, преобразую данные поля в массив, потом, добавляю к нему еще один id? дальше делаю опять строку из массива и потом обновляю поле tovar.

Как то длинно мне кажется получается. Должно же быть оптимальное решение.

Подскажите есть ли варианты в моем случае, сделать примерно так же как в первом примере?



Спустя 22 минуты, 22 секунды (1.04.2011 - 10:57) ZSH написал(а):
может это concat_ws

Спустя 20 минут, 8 секунд (1.04.2011 - 11:17) Trianon написал(а):
Чисто теоретически это можно сделать с помощью CONCAT()
На практике - ключи никогда не пишутся списком в одну ячейку
Хотите вести список - ведите его в строках связанной таблицы - по элементу на строку.

Спустя 40 минут, 59 секунд (1.04.2011 - 11:58) kuzroman написал(а):
Цитата (Trianon @ 1.04.2011 - 08:17)
Чисто теоретически это можно сделать с помощью CONCAT()
На практике - ключи никогда не пишутся списком в одну ячейку
Хотите вести список - ведите его в строках связанной таблицы - по элементу на строку.

Случаи разные бывают.
И начальники тоже smile.gif

Спустя 10 минут, 47 секунд (1.04.2011 - 12:09) kuzroman написал(а):
Цитата (Trianon @ 1.04.2011 - 08:17)
Чисто теоретически это можно сделать с помощью CONCAT()
На практике - ключи никогда не пишутся списком в одну ячейку
Хотите вести список - ведите его в строках связанной таблицы - по элементу на строку.

ээээ а как его в php то обработать? я что то пробую
так
$zapros= mysql_query(" Select CONCAT_WS (',','11111','22222','33333') FROM `stats` WHERE `date`='$date' ") or die("Invalid query: " . mysql_error());

и ничего не выходит!

Спустя 14 минут, 38 секунд (1.04.2011 - 12:24) ZSH написал(а):
UPDATE `tbl` SET `ppp` = CONCAT_WS(',', `ppp`, '11111') WHERE bla = bla;


попробуй

Спустя 13 минут (1.04.2011 - 12:37) Trianon написал(а):
Цитата
Случаи разные бывают.
И начальники тоже smile.gif

Это верно.
Но просьбы предлагать изначально кривые решения это всё не оправдывает.

Хреновый случай - чините случай.
Хреновый начальник - чините начальника.
А научить шуруп забивать молотком просить не надо.

Спустя 7 минут, 19 секунд (1.04.2011 - 12:44) kuzroman написал(а):
В общем какая красота получилась))

$id_tovar_arr = array_keys($_SESSION['korzina']); // выбрать все ключи массива
$id_tovar_str = implode(', ', $id_tovar_arr); // все ключи массива преобразовать в строку

$zapros= mysql_query(" UPDATE `stats` SET `$from_tovar`=CONCAT_WS(',', `$from_tovar`, '$id_tovar_str') WHERE date='$date' ");


И никакой второй таблицы не нужно))


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.