Показать полную графическую версию : [решено] Сравнение ячеек в БД (SQL или access)
sidorova
27-08-2006, 00:59
Помогите, пожалуйста, с запросом.
Расскажу на примере.
У меня есть таблица: Код, Улица, Этаж, Этажность и Цена. Код уникален. Улица Этаж и Этажность могут быть одинаковыми. Мне надо удалить все строки, в которых Улица Этаж и Этажность одинаковы, а Цена отличается на 300 у.е.( То есть если отличается больше, чем на 300, то удалять не надо. ). Можно ли как -то сравнить эти цены?
Буду очень благодарна за помощь)
Vlad Drakula
27-08-2006, 01:24
sidorova
а строки в таблице пронумерованы?
sidorova
27-08-2006, 11:13
Vlad Drakula, да, там уникальный код, который нельзя удалять.
Vlad Drakula
27-08-2006, 11:25
sidorova
UID это не номер строки... нужен именно номер строки...
если это UID у вас это тоже что и "автоматический индекс" в MySQL то подойдет...
главное наличие номера строки... тогда все просто...
если еще один вопрос:
к примеру:
кв1 = 300$
кв2 = 500$
кв3 = 700$
кв4 = 900$
кские строчки должны исчезнуть?
все кроме первой?
sidorova
27-08-2006, 12:07
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
sidorova
почему именно первая? почему не третья?
sidorova
Vlad Drakula, я не поняла, про номер строки. у меня есть таблица в 30 тыс строк, из которой по разным признакам я удаляю строки. все эти строки были азначалько пронумерованы: 1 - 30919. нумерация стоит отделным столбцом, у меня кодом, и служит для связи, иначе я все потеряю. сейчас уже строки не по порядку.
в таком случае вполне подойдет...
sidorova
27-08-2006, 12:20
Vlad Drakula, потому что в первой цена меньше.
Vlad Drakula
27-08-2006, 12:32
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
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
sidorova
1) я веть слово "Улица" написал просто так... вы должны подставить туда название соответствующего столбца в таблице...
2) я написал SQL который скорее всего работает в оракле, но не факт что у вас он заработает... в MySQL к пимеру он наверное и не заработает...
sidorova
27-08-2006, 12:59
Vlad Drakula, и Улица, м все остальное написано правильно. а id я изменила на "код" (правильно ведь?). я делаю в access, что надо изменить, чтобы работало???
Vlad Drakula
27-08-2006, 13:15
sidorova
не специалист я по access так что не знаю...
но лично мне не нравится названия столбцов на русском... не хорошо это как то...
sidorova
27-08-2006, 13:21
Vlad Drakula, все получилось!!!!! )))) стоило только "!=" заменить на "<>" !!!!! спасибо Вам огромное!!!!!!!!!!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.