Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить строки по условию 
:(
    Опции темы
Sunvas
Дата 27.4.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Собсно продолжение темы http://forum.vingrad.ru/topic-147918.html
Есть таблица. Записи в ней примерно таковы
Код

Id Num Text    
1 1 Текст ------    
2 2 Текст    
....    
75 75 Текст    
76 1 Нет значения ------    
77 2 Нет значения    
...    
99 24 Нет значения    
100 76 Текст    
...

Нужно удалить из нее встре строки, у которых Num меньше предыдущей строки.
Или (наборот) больше следующей.  smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Vaulter
Дата 27.4.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



предыдущей за чем? следующей за чем?


--------------------
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 27.4.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Есть таблица такого вида:
Код

id    num      text
1     1          текст
2     2          текст
3     3          текст
4     4          текст
...
75   75        текст
{каждый num больше num-a в предыдущей строке. Но дальше есть участок, который выглят примерно так:}
76   1         текст
77   2         текст
78   3         текст
...
99   24       текст

Вот такие участки и надо удалить. Потому что num 76й строки меньше num-a 75.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Gold Dragon
Дата 28.4.2007, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



ну при таком раскладе проще сравнивать поля ID и NUM. Если NUM<ID то удалять  smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 28.4.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Цитата(Gold Dragon @  28.4.2007,  08:12 Найти цитируемый пост)
ну при таком раскладе проще сравнивать поля ID и NUM. Если NUM<ID то удалять   

Не правильно!
Ведь за куском неправильности идут правильные куски, у которых Num<Id!


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
capitan
Дата 28.4.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 2
Всего: 13



для таких вещей поле num можно сделать уникальным "UNIQUE" 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 28.4.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Sunvas, а можешь чуть подробнее описать что что это за цифры и для чего их удалять... Я просто к тому, что если эта таблица будет как-то отсортирована по другому, то твоё удаление будет опасно делать. А полагаться на то, что таблица никогда не будет сотрироваться как-то не не серьёзно


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 28.4.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Цитата(Gold Dragon @  28.4.2007,  14:02 Найти цитируемый пост)
Я просто к тому, что если эта таблица будет как-то отсортирована по другому, то твоё удаление будет опасно делать. А полагаться на то, что таблица никогда не будет сотрироваться как-то не не серьёзно

Согласен. Но таблица заполняется значениями только один раз. Удаление тоже будет производиться только один раз. Все сортировки будут производиться после удаления.

Цитата(Gold Dragon @  28.4.2007,  14:02 Найти цитируемый пост)
Sunvas, а можешь чуть подробнее описать что что это за цифры и для чего их удалять...

По этим цифрам я определяю "лишние" поля.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
capitan
Дата 28.4.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 2
Всего: 13



Sunvas, так я не понял в поле num могут быть повторения или нет? Если нет смотри мой пост выше.
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 28.4.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Ты знаешь, суббота, скоро выходные, пью пиво smile  в общем в голову ничего не лезит.

Может просто вот так сделать
Код

$z = "SELECT * FROM `table`"
$r = mysql_query($z);
if(mysql_num_rows($r)>0){
    for($i=0;$i<mysql_num_rows($r);$i++){
        $f = mysql_fetch_array($r);
        $info[$i]['id'] = $f['id'];
        $info[$i]['num']= $f['num'];
    }
}
$nn = 0;
for($i=1;$i<mysql_num_rows($r);$i++){
    if($info[$i]['num']< $info[$nn]['num']){
        $z = "DELETE FROM `table` WHERE `id`=".$info[$i]['id'];
        $r = mysql_query($z);
    }else{
        $nn = $i;
    }
}

код не проверял


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sunvas
Дата 28.4.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Цитата(capitan @  28.4.2007,  14:35 Найти цитируемый пост)
Sunvas, так я не понял в поле num могут быть повторения или нет?

Если бы их небыло, я бы и тему не создавал.  smile В поле num очень много повторений.

Gold Dragon, неплохо. А может можно как-нить одноим запросом?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Gold Dragon
Дата 29.4.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 2
Всего: 71



Цитата(Sunvas @  28.4.2007,  15:20 Найти цитируемый пост)
А может можно как-нить одноим запросом?

а зачем? если ты это делаешь всего один раз smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0795 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.