![]() |
Сравнение ячеек в БД (SQL или access)
Помогите, пожалуйста, с запросом.
Расскажу на примере. У меня есть таблица: Код, Улица, Этаж, Этажность и Цена. Код уникален. Улица Этаж и Этажность могут быть одинаковыми. Мне надо удалить все строки, в которых Улица Этаж и Этажность одинаковы, а Цена отличается на 300 у.е.( То есть если отличается больше, чем на 300, то удалять не надо. ). Можно ли как -то сравнить эти цены? Буду очень благодарна за помощь) |
sidorova
а строки в таблице пронумерованы? |
Vlad Drakula, да, там уникальный код, который нельзя удалять.
|
sidorova
UID это не номер строки... нужен именно номер строки... если это UID у вас это тоже что и "автоматический индекс" в MySQL то подойдет... главное наличие номера строки... тогда все просто... если еще один вопрос: к примеру: кв1 = 300$ кв2 = 500$ кв3 = 700$ кв4 = 900$ кские строчки должны исчезнуть? все кроме первой? |
Vlad Drakula, я не поняла, про номер строки. у меня есть таблица в 30 тыс строк, из которой по разным признакам я удаляю строки. все эти строки были азначалько пронумерованы: 1 - 30919. нумерация стоит отделным столбцом, у меня кодом, и служит для связи, иначе я все потеряю. сейчас уже строки не по порядку.
Цитата:
Код_____Улица______________Этаж_____Этажность_____Цена 1_______Героев Панфиловцев___2_________3___________ 400 89______Кирпичная____________7_________9____________800 34______Героев Панфиловцев___2_________3___________ 406 55______Алексеевская_________4_________8___________ 308 59______Алексеевская_________6_________8____________307 78______Кирпичная___________ 7_________9____________400 здесь должна удалиться только одна строка, первая. |
sidorova
почему именно первая? почему не третья? sidorova Цитата:
|
Vlad Drakula, потому что в первой цена меньше.
|
sidorova
Цитата:
я думаю что код будет примерно такой: 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 ) |
Цитата:
and t1.Этаж = t2.Этаж and t1.Этажность = t2.Этажность and t1.Цена >= t2.Цена and t1.Цена - t2.Цена <=300 and t1.id != t2.id " пропущен оператор. |
sidorova
1) я веть слово "Улица" написал просто так... вы должны подставить туда название соответствующего столбца в таблице... 2) я написал SQL который скорее всего работает в оракле, но не факт что у вас он заработает... в MySQL к пимеру он наверное и не заработает... |
Vlad Drakula, и Улица, м все остальное написано правильно. а id я изменила на "код" (правильно ведь?). я делаю в access, что надо изменить, чтобы работало???
|
sidorova
не специалист я по access так что не знаю... но лично мне не нравится названия столбцов на русском... не хорошо это как то... |
Vlad Drakula, все получилось!!!!! )))) стоило только "!=" заменить на "<>" !!!!! спасибо Вам огромное!!!!!!!!!!
|
Время: 09:42. |
Время: 09:42.
© OSzone.net 2001-