Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Сравнение ячеек в БД (SQL или access) (http://forum.oszone.net/showthread.php?t=70376)

sidorova 27-08-2006 00:59 477201

Сравнение ячеек в БД (SQL или access)
 
Помогите, пожалуйста, с запросом.
Расскажу на примере.
У меня есть таблица: Код, Улица, Этаж, Этажность и Цена. Код уникален. Улица Этаж и Этажность могут быть одинаковыми. Мне надо удалить все строки, в которых Улица Этаж и Этажность одинаковы, а Цена отличается на 300 у.е.( То есть если отличается больше, чем на 300, то удалять не надо. ). Можно ли как -то сравнить эти цены?
Буду очень благодарна за помощь)

Vlad Drakula 27-08-2006 01:24 477205

sidorova
а строки в таблице пронумерованы?

sidorova 27-08-2006 11:13 477268

Vlad Drakula, да, там уникальный код, который нельзя удалять.

Vlad Drakula 27-08-2006 11:25 477276

sidorova
UID это не номер строки... нужен именно номер строки...
если это UID у вас это тоже что и "автоматический индекс" в MySQL то подойдет...
главное наличие номера строки... тогда все просто...

если еще один вопрос:
к примеру:
кв1 = 300$
кв2 = 500$
кв3 = 700$
кв4 = 900$
кские строчки должны исчезнуть?
все кроме первой?



sidorova 27-08-2006 12:07 477289

Vlad Drakula, я не поняла, про номер строки. у меня есть таблица в 30 тыс строк, из которой по разным признакам я удаляю строки. все эти строки были азначалько пронумерованы: 1 - 30919. нумерация стоит отделным столбцом, у меня кодом, и служит для связи, иначе я все потеряю. сейчас уже строки не по порядку.

Цитата:

если еще один вопрос:
к примеру:
кв1 = 300$
кв2 = 500$
кв3 = 700$
кв4 = 900$
кские строчки должны исчезнуть?
все кроме первой?
здесь невозможено понять, что удалять. вот пример таблицы:
Код_____Улица______________Этаж_____Этажность_____Цена
1_______Героев Панфиловцев___2_________3___________ 400
89______Кирпичная____________7_________9____________800
34______Героев Панфиловцев___2_________3___________ 406
55______Алексеевская_________4_________8___________ 308
59______Алексеевская_________6_________8____________307
78______Кирпичная___________ 7_________9____________400

здесь должна удалиться только одна строка, первая.


Vlad Drakula 27-08-2006 12:17 477292

sidorova
почему именно первая? почему не третья?

sidorova
Цитата:

Vlad Drakula, я не поняла, про номер строки. у меня есть таблица в 30 тыс строк, из которой по разным признакам я удаляю строки. все эти строки были азначалько пронумерованы: 1 - 30919. нумерация стоит отделным столбцом, у меня кодом, и служит для связи, иначе я все потеряю. сейчас уже строки не по порядку.
в таком случае вполне подойдет...

sidorova 27-08-2006 12:20 477295

Vlad Drakula, потому что в первой цена меньше.

Vlad Drakula 27-08-2006 12:32 477304

sidorova
Цитата:

Vlad Drakula, потому что в первой цена меньше.
вот про это кстати вы умолчали ;)

я думаю что код будет примерно такой:

delete from table where id in(
select
t2.id
from
table t1, table t2
where
t1.Улица = t2.Улица
and t1.Этаж = t2.Этаж
and t1.Этажность = t2.Этажность
and t1.Цена >= t2.Цена
and t1.Цена - t2.Цена <=300
and t1.id != t2.id
)

sidorova 27-08-2006 12:51 477313

Цитата:

delete from table where id in(
select
t2.id
from
table t1, table t2
where
t1.Улица = t2.Улица
and t1.Этаж = t2.Этаж
and t1.Этажность = t2.Этажность
and t1.Цена >= t2.Цена
and t1.Цена - t2.Цена <=300
and t1.id != t2.id
)
он мне пишет, что в выражении "t1.Улица = t2.Улица
and t1.Этаж = t2.Этаж
and t1.Этажность = t2.Этажность
and t1.Цена >= t2.Цена
and t1.Цена - t2.Цена <=300
and t1.id != t2.id " пропущен оператор.

Vlad Drakula 27-08-2006 12:57 477316

sidorova
1) я веть слово "Улица" написал просто так... вы должны подставить туда название соответствующего столбца в таблице...
2) я написал SQL который скорее всего работает в оракле, но не факт что у вас он заработает... в MySQL к пимеру он наверное и не заработает...


sidorova 27-08-2006 12:59 477318

Vlad Drakula, и Улица, м все остальное написано правильно. а id я изменила на "код" (правильно ведь?). я делаю в access, что надо изменить, чтобы работало???

Vlad Drakula 27-08-2006 13:15 477324

sidorova
не специалист я по access так что не знаю...
но лично мне не нравится названия столбцов на русском... не хорошо это как то...

sidorova 27-08-2006 13:21 477326

Vlad Drakula, все получилось!!!!! )))) стоило только "!=" заменить на "<>" !!!!! спасибо Вам огромное!!!!!!!!!!


Время: 09:42.

Время: 09:42.
© OSzone.net 2001-