:: Visual Foxpro, Foxpro for DOS
Re: SQL-UPDATE "первой" записи
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
да хучь 30 - для хорошего человека то не жалко :beer2:
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
of63

Попробуйте использовать агрегатную функцию MIN(). она возьмет только одну запись.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Попробую, лулгу, какое поле посоветуешь взять в параметр в MIN()?

() напомню, все записи таблички - идентичны, это камень преткновения в нашем форуме, "черная дыра" в опыте общения с таблицами, с БД
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
of63
Доб. надо сделать аналог набора фоксовых:
SET FILTER TO условие
LOCATE && не проверяем FOUND(), что хотя бы одна запись есть, допустим она точно есть
REPLACE поле WITH 1

SELECT MIN(ваше_поле) FROM table1 WHERE ваше_условие
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Лулгу, надеюсь, ты программируешь ваши баллистические ракеты )
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
of63
...без ID-шные таблы нарушают модель - немного нематематично?, ну да, нарушают. Математики! делайте модели более жизненные, че
С точностью до наоборот. ID это суррогатный ключ, он вводится в модель только потому, что оперировать естественным ключом не всегда удобно. А вся теория реляционной модели строится именно что на естественном первичном ключе. Каждая запись таблицы должна иметь одно или несколько полей, уникально идентифицирующих запись (про ID ни слова).
И опять, не надо путать причину со следствием. Уже на базе этого допущения был разработан язык SQL, позволяющий оперировать с данными именно такого вида, а не наоборот. Никто не придумывал SQL с потолка, а потом поняв, что тот что-то не умеет, ввёл ограничения.
Таким образом, если вы у себя создали нереляционную таблицу, то нет никакого смысла применять к ней язык для реляционных таблиц. Пользуйтесь FIND/REPLACE и радуйтесь.

Кстати, все решения с суррогатным ключом типа RECNO и RowID это как-раз попытка привести таблицу к реляционному виду.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Да есть "ID" в табличке - это RECNO. Можно WHERE записать например как поиск минимального RECNO() в группе записей по "условие":
UPDATE табличка SET поле=1 WHERE RECNO() IN (SELECT MIN(RECNO()) FROM табличка WHERE условие)
но выглядит по дурацки Ну замените в нем RECNO() на ID, и тоже не веселее
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
"По дурацки" - это работать с нереляционными данными в реляционной СУБД средствами языка созданного для реляционной модели. Это как забивать шурупы молотком, и закручивать гвозди отвёрткой.

Кстати, мультимножества в принципе трансформируются в реляционную модель. Вместо таблицы с 10 полями имеющую 100 "абсолютно одинаковых записей", делается таблица с 11-ю полями, одно из которых имеет смысл "число элементов в наборе". Запись там для всей этой "кучи" будет всего одна.
Конечно семантически работать с такой таблицей не совсем удобно - операция "извлечения" элемента из набора будет реализоваться как update ... set cnt=cnt-1 вместо delete
Операция "помещения" элемента в набор - как merge/upsert (т.е. insert если нет подходящей "кучи", или update ... set cnt=cnt+1 если есть) а не просто insert.
А операция "изменения" - как комбинация "извлечения старого" и "помещения нового" элементов.
Впрочем, для чисто объектных реализаций работа идёт сходным образом - зачастую явно запрещают "изменять" объект находящийся в колелкции/bag - т.е. его нужно для изменения сначала "извлечь", а затем поместить обратно.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Про поле-счетчик в курсе.

Записи на самом деле разные, например, 10 консервных банок, все отличаются датой поставки. Когда банки выставили на полку, то банка теряет свою уникальность (на ней нет ярлычка "дата поставки"), и когда банка разбивается, то надо пометить любую запись банки, от любой даты поставки. Это я упростил, сказав, что есть 10 одинаковых записей, т.е. условие отбора этих 10 банок не может включать в себя дату поставки, и следовательно "видит" 10 одинаковых записей.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если ты хочешь решать конкретную прикладную задачу - это одно. Под неё и структуру надо делать соответствующую. Если вопрос "теоретический" - то IMHO ответ дан. SQL не работает с мультинаборами - только с "отношениями", где кортежи уникальны. Наличие уникальности позволяет тем или иным способом выйти на ОДНУ КОНКРЕТНУЮ запись - в т.ч. в группе "неразличимых по бизнес-критерию" - скажем в той же "группе" всех банок независимо от даты поставки/номера накладной.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Это все понятно, и в теории и в практике. Вопрос был "нет ли в UPDATE такой же опции как TOP N в SELECT". Ведь в SELECT присобачили возврат TOP N - N записей, отобранных произвольно, или в порядке ORDER...

Или интересно как это делают тру-дбашники, когда им надо изменить одну запись в группе неразличимых (кроме ID) записей. Например, в базе "задвоились" консервные банки (оператор по ошибке 2 раза завел одну накладную). Одну запись надо удалить. Никаких "дат ввода" нет. ID есть (тру-база потому-что). Просто 2 одинаковых записи. Какую запись надо удалить? Как записать оператор UPDATE?
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
of63
Это все понятно, и в теории и в практике. Вопрос был "нет ли в UPDATE такой же опции как TOP N в SELECT". Ведь в SELECT присобачили возврат TOP N - N записей, отобранных произвольно, или в порядке ORDER...
Или интересно как это делают тру-дбашники, когда им надо изменить одну запись в группе неразличимых (кроме ID) записей. Например, в базе "задвоились" консервные банки (оператор по ошибке 2 раза завел одну накладную). Одну запись надо удалить. Никаких "дат ввода" нет. ID есть (тру-база потому-что). Просто 2 одинаковых записи. Какую запись надо удалить? Как записать оператор UPDATE?
Типичный диалог с пользователем на эту тему:
диалог
- Снеси мне любую запись из вот этого набора.
- Ок. Снёс любую запись.
- Это не та любая запись, я имел ввиду другую.
- Упс...
И другой диалог.
диалог
- Снеси мне любую запись из вот этого набора.
- Давайте либо выберем в диалоге, либо установим критерий.
- Ну вот давайте установим критерий: [идёт описание тупого критерия].
- Ок. Снёс запись по [тупому] критерию.
- Ой! Это не та запись.
- Зато она чётко подходит под [тупой] критерий, а другие не подходят.
Скуль тоже не хочет нести ответственность за выбор записи. (;Ж

Ну а чем не тупой критерий MIN(Id) или MAX(Id)? Вполне.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
of63
Какую запись надо удалить? Как записать оператор UPDATE?
- да мало ли какова логика то ... может вполне допустимо такое - клиент заказал товар, потом решил продублировать ... все тож самое кроме id (ну раз времени нет - хотя обычно таки есть )))) )
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Кагбы по мотивам...


Мужика ведут на расстрел. Прохожие:
- А за что его?
- Да ни за что. Просто два одинаковых оказалось. [sm128]
Ratings: 0 negative/1 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Или нашли двойника Сталина. Сталин приказал его расстрелять, Орджо - «А может, сбрить ему усы?» — „Дельная мысль, — соглашается Сталин. — Сбрить усы, а потом расстрелять“».
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
of63
Это все понятно, и в теории и в практике. Вопрос был "нет ли в UPDATE такой же опции как TOP N в SELECT". Ведь в SELECT присобачили возврат TOP N - N записей, отобранных произвольно, или в порядке ORDER...
Или интересно как это делают тру-дбашники, когда им надо изменить одну запись в группе неразличимых (кроме ID) записей.
Опять двадцать пять...
Цитата:
Например, в базе "задвоились" консервные банки (оператор по ошибке 2 раза завел одну накладную). Одну запись надо удалить. Никаких "дат ввода" нет. ID есть (тру-база потому-что). Просто 2 одинаковых записи.
Они, конечно, разные, но они одинаковые? Ты хоть сам-то понимаешь ЧТО ты пишешь и спрашиваешь?
Цитата:
Какую запись надо удалить? Как записать оператор UPDATE?
Как уже было не единожды написано. Тру-дбашники не занимаются мазохизмом с игнорированием наличия ID.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Ты хоть сам-то понимаешь ЧТО ты пишешь и спрашиваешь?
Элементарный вопрос вроде задал... Приведите пример кода UPDATE одной записи из двух "одинаковых" (определение одинаковости придумайте сами, раз это слово вызывает затруднения в интерпретации). Я привел, с RECNO() (или с ID вместо него). Лулгу привел примеры... и всё. Остальные посты - убеждения меня в моей непроходимой тупости
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
of63
> Ты хоть сам-то понимаешь ЧТО ты пишешь и спрашиваешь?
Элементарный вопрос вроде задал...
Это некорректный вопрос. Про сферического коня. Ты тупо уперся в неуникальность. Хотя тебе твердят, что ее нет. И даже если бы была её нетрудно убрать. Потому отказ от уникальности похож на идиотизм.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Ведь в SELECT присобачили возврат TOP N - N записей, отобранных произвольно, или в порядке ORDER

По-моему, TOP без ORDER работать не будет.
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Пишут что да, не будет. Согласен на UPDATE TOP 1 c ORDER-ом )

Хелп:
Для использования опции ограниченной выборки TOP, вы болжны обязательно определить секцию ORDER BY, для сортировки. В секции ORDER BY определяется имя / номер столбца, относительно которого выполняется выборка первых записей Запроса, количество которых задается в опции TOP.
Ratings: 0 negative/0 positive


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

On-line: 33 (Гостей: 33)

© 2000-2024 Fox Club 
Яндекс.Метрика