Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменение повторных строк в таблице

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Brothersssddsss
Отправлено: 03 Октября, 2010 - 13:49:48
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Здравствуйте!!

Таблица выглядит так:

| pole1 | pole2 | pole3 | pole4 | pole5 | pole6 |
-------------------------------- -----------------
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 5 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 4 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 1 _|_ 2 _|_ 5 _|_ 4 _|_ 5 _|_ 1 _|

Есть такая проблема: нужно изменить значения столбца "pole6" на 0 у тех строк которые повторные, но не у всех, у одной строки должно остаться значение столбца "pole6" - 1.

Значит нужно заменять:

| pole1 | pole2 | pole3 | pole4 | pole5 | pole6 |
-------------------------------- -----------------
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 0 _| <-
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 0 _| <-
|_ 1 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 0 _| <-
|_ 5 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 4 _|_ 2 _|_ 3 _|_ 4 _|_ 5 _|_ 1 _|
|_ 1 _|_ 2 _|_ 5 _|_ 4 _|_ 5 _|_ 1 _|

Заметьте что любая из повторных строк должна остаться не изменённой. 3 последних строки не трогать так как они уникальные.

(Отредактировано автором: 03 Октября, 2010 - 13:50:31)

 
 Top
HotBird
Отправлено: 03 Октября, 2010 - 18:21:48
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE TABLE
  2. SET pole6=0
  3. WHERE pole1=1 AND pole2=2 AND pole3=3 AND pole4=4 AND pole5=5
  4. LIMIT 3


-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
Brothersssddsss
Отправлено: 03 Октября, 2010 - 19:26:08
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Ну да.... Я забыл написать что я не знаю какие значения в столбцах, я только знаю что там цифры.
 
 Top
HotBird
Отправлено: 03 Октября, 2010 - 21:23:25
Post Id



Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010  


Помог: 2 раз(а)




Трудно сделать выбор из базы если не известны значения полей. Тогда вам наверное надо зачитать всю таблицу, потом в цикле просматривая каждую строку создавать массив совпадающих строк. В результате вы получите что-то типа array ('строка1'=>'количество совпадений','строка2'=>'количество совпадений',...)
Строка с наибольшим количеством совпадений и будет искомой. После чего делаете UPDATE как я написал выше, со значением LIMIT количество совпадений-1

(Отредактировано автором: 03 Октября, 2010 - 21:24:30)



-----
Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев.
Качественный хостинг по доступной цене
 
 Top
JustUserR
Отправлено: 04 Октября, 2010 - 00:22:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Brothersssddsss Для организации SQL-запроса позволяющего использовать обращение к неуникальным записям некоторой таблицы возможно использовать следующую схему - вы создаете рефлексивное соединение таблицы с условием отсутстия выборки в правой части идентичной строки или пустого информационных полей - и в таком случае можете выбрать из набора неуникальных строк ведущее значение на основе которых проводить модификацию значений других требуемых элементов


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB