![]() |
|
Модераторы: skyboy |
![]()
|
|
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.7.2007 Репутация: нет Всего: -1 |
В таблицу периодически вставляются записи вида string_a, string_b, string_c, num_d, где первые три строковых переменных могут быть какими угодно, и повторяться в любых комбинациях сколько угодно раз.
Необходимо при вставке записи, в случае если в таблице существует запись с такими же точно string_a И string_b И string_c увеличить на 1 значение num_d, а саму строку повторно не вставлять. Желательно сделать это с минимальной нагрузкой (PHP+MySQL), как поступить в таком случае? Таблица пока что не существует, поэтому рассматриваются любые варианты. Это сообщение отредактировал(а) elCreator - 25.1.2009, 03:53 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
покажи на примере.
в голову пришло использование unique key и insert into .... on duplicate key update ... но я не уверен, что правильно понял вопрос. |
|||
|
||||
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.7.2007 Репутация: нет Всего: -1 |
Пример:
Иванов |Иван |Иванович |1 Петров |Сергей |Викторович |1 Сидоров |Иван |Иванович |1 Иванов |Иван |Сергеевич |1 Приходят данные "Иванов |Иван |Иванович". Нам нужно вместо того чтобы вставлять их в таблицу, просто обновить значение в уже имеющейся соответствующей строке: Иванов |Иван |Иванович |2 Петров |Сергей |Викторович |1 Сидоров |Иван |Иванович |1 Иванов |Иван |Сергеевич |1 Есть ли способ поизящнее чем q="SELECT * FROM table WHERE a='Иванов',b='Иван',c='Иванович'"; ... if (mysql_result($q) !=""){ $q="INSERT INTO table ...." } else{ $q="UPDATE table ...." } Это сообщение отредактировал(а) elCreator - 25.1.2009, 16:18 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
да. insert into .... on duplicate key update ... только надо создать уникальный индекс по имя+фамилия+отчество. |
|||
|
||||
| elCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.7.2007 Репутация: нет Всего: -1 |
А что лучше в качестве такого ключа - какой-нибудь хеш (если да то какой, при том что крайне нежелательно повторить унивальный ключ для разных записей), или же просто конкатенцию значений вставляемых трех полей? а потом те же значения записывать в соответствующие поля - получается дублирование информации...
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |