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

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
of63
ладно... UPDATE TOP 1 SET поле=1 WHERE - так можно ?
Ты программист-теоретик? Практики совсем боишься? В окне фокса сие написать и почитать ответ очень стремно? Подзапросов боишься как черт ладана? Обязательно запрос должен быть только в самой простейшей форме?

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

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
of63
ладно... UPDATE TOP 1 SET поле=1 WHERE - так можно ?
Для неумеющих читать хелп цитирую:
UPDATE Target
SET Column_Name1 = eExpression1 [, Column_Name2 = eExpression2 ...]
[FROM [FORCE] Table_List_Item [[, ...] | [JOIN [ Table_List_Item]]]
WHERE FilterCondition1 [AND | OR FilterCondition2 ...]
TOP в цитате видишь? Я нет.


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

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
И я нет. как же среди одинаковых записей сработает WHERE всего лишь на единственную запись?
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
of63
И я нет. как же среди одинаковых записей сработает WHERE всего лишь на единственную запись?
Молча. Просто условие будет с подзапросом.
WHERE идентификатор_записи = (SELECT TOP 1 <> FROM <> WHERE <> ORDER BY <>)
Вот это все и есть условие на 1(ОДНУ) запись. Что непонятно?


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

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
1) У каждой записи есть как минимум RECNO(), это отличает все одинаковые записи.
2) Для одинаковых записей можно через разные алгоритмы нагенерировать уникальный ID.
3) TOP 1 возвращает одну запись, можно и без уникального ключа обойтись.

Ты где растерялся?


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Все понятно. Вы с табличкой без ID уже не справитесь

Доб. матом вас расстрелять Говорю раз 4й, что нет ИД, записи одинаковые, ... и все одно талдычат "найди правильное выражение WHERE"... Ну все, ответ получил, в принципе, что такого выражения нет в моих условиях. Метры запросов, кроме TOP и RECNO, тоже ничего не знают для данного случая.

А.. И главный ответ - сделай сам! Как в Футураме - "Если нужно выкинуть коробку на Солнце, то сделай это сам"



Исправлено 2 раз(а). Последнее : of63, 22.03.18 20:47
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
of63
Все понятно. Вы с табличкой без ID уже не справитесь
Это не мы, это особенности языка и математической модели, для которой он создан. Но, похоже, до некоторых это не доходит...

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

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
of63
Вы с табличкой без ID уже не справитесь Вы с табличкой без ID уже не справитесь

Я ж тебе говорю - кидай табличку, покажем, как на твоих данных будет запрос выглядеть для одинаковых банок. Но ты предпочитаешь шутить, а врубиться не хочешь.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Надо модели и кроме типовой мат. модели сечь, приходится, да и просто, для общего развития...
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
sphinx
of63
Вы с табличкой без ID уже не справитесь Вы с табличкой без ID уже не справитесь

Я ж тебе говорю - кидай табличку, покажем, как на твоих данных будет запрос выглядеть для одинаковых банок. Но ты предпочитаешь шутить, а врубиться не хочешь.

Саня! В данном случае меня интересует именно WHERE-выражение (без RECNO) для фоксового SQL-UPDATE, указывающее на единственную запись среди идентичных! записей. Все. Все ясно мне уже )
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
sphinx

Сообщений: 31166
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
А TOP 1 чем не устраивает? :doom:


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не сделал тестового примера... ну, бесполезно (а потому и лень). Этот твой TOP 1 стоит после WHERE, а все записи в моей табличке идентичные, ID не имеют, RECNO() пользоваться нельзя (вопрос в данном топике принципиальный, просто хочется знать, как это делают тру-ораклисты и прирожденные ДБА-шники), ну и у меня код на 10 строк SCAN-а или однострочный UPDATE-код...
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
на нефоксовое SQL-WHERE-выражение можно построить "любая запись", или нельзя
Нет нельзя.
Абсолютно одинаковые/неотличимые записи нарушают принцип построения реляционной модели.
ru.wikipedia.org
Цитата:
Основные свойства отношения:
- В отношении нет двух одинаковых элементов (кортежей).
- Порядок кортежей в отношении не определён.
- Порядок атрибутов в заголовке отношения не определён.
Подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости), называется потенциальным ключом. Поскольку все кортежи в отношении по определению уникальны, в любом отношении должен существовать по крайней мере один потенциальный ключ.

В фоксе в некоторых случаях, написал черезж*пошный код можно применить recno() - он уникален, и потому его добавка и превратит имеющееся в dbf г*но в подобие реляционной таблицы, т.е. "отношения".
Во многих других СУБД есть те или иные "внутренние штучки", которые могут служить той же цели - типа псевдополя ROWID в oracle.
Впрочем, это нисколько не оправдывает безграмотного архитектора, создавшего такую вот "таблицу с дублями".

TOP есть далеко не во всех реализациях SQL, применим он лишь для SELECT запросов, и, кроме того, его поведение для "одинаковых" в порядке сортировки записей может быть разным в разных реализациях - в том же фоксе до исправлений в 9 версии TOP 1 запросто мог вернуть и 5 и 10 записей, если они были неотличимы по ключам сортировки - при том даже не "полностью идентичны", просто в order by стоит к примеру name - и все "Васи" попадают в запрос с TOP 1 несмотря на различие в фамилиях, датах рождения и т.п. Проверить можно понизив уровень совместимости через SET ENGINEBEHAVIOR 80.


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

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
вопрос в данном топике принципиальный, просто хочется знать, как это делают тру-ораклисты и прирожденные ДБА-шники
Пишут начальству докладную записку о профессиональной непригодности автора такой таблицы. Оного автора либо учат (если он не совсем безнадёжен), либо увольняют.


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

Сообщений: 1550
Откуда: Волгоград
Дата регистрации: 28.06.2015
Ну как бы решал я подобную задачку, правда не в фоксе, но суть примерно та же - мне не нужен был update всех попадающих под условие записей (их просто дохерища ~400млн), поэтому апдейтил частями )))

Цитата:
update tprice_conc set ...что_нужно... where ...условие... rows 100000

можно было конечно прицепиться по id-кам с подзапросом - но данный код делал то что мне нужно



Исправлено 1 раз(а). Последнее : AndyNigmatec, 22.03.18 21:30
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Igor Korolyov
of63
вопрос в данном топике принципиальный, просто хочется знать, как это делают тру-ораклисты и прирожденные ДБА-шники
Пишут начальству докладную записку о профессиональной непригодности автора такой таблицы. Оного автора либо учат (если он не совсем безнадёжен), либо увольняют.

> Нет нельзя.
Это я и хотел услышать, можно/нельзя, а тебе я доверяю, в разумных пределах

...без ID-шные таблы нарушают модель - немного нематематично?, ну да, нарушают. Математики! делайте модели более жизненные, че
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Для того о чём ты говоришь (100 абсолютно одинаковых банок) есть подходящие математические модели, скажем Мультимножество. Только они не через SQL управляются...


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

Сообщений: 1550
Откуда: Волгоград
Дата регистрации: 28.06.2015
ежели нет уникального идентификатора, то в фоксе (как ИК и написал выше) RECNO() можно заюзать ... например типа так (поле id тут тока для наглядности), условие - ncode=0, как видно изначально под него вся тыща попадает

SELECT 0
CREATE CURSOR cTest (id i, ncode i)
FOR i=1 TO 1000
INSERT INTO cTest (id, ncode) VALUES (i, 0)
ENDFOR
&& апдейтим одну
SELECT TOP 1 RECNO() as nrec, * FROM cTest WHERE ncode=0 INTO CURSOR cU READWRITE ORDER BY ncode
UPDATE cTest SET cTest.ncode=1;
FROM cU WHERE RECNO('cTest')=cU.nrec
&& апдейтим еще одну
SELECT TOP 1 RECNO() as nrec, * FROM cTest WHERE ncode=0 INTO CURSOR cU READWRITE ORDER BY ncode
UPDATE cTest SET cTest.ncode=1;
FROM cU WHERE RECNO('cTest')=cU.nrec

ну или типа того ...



Исправлено 1 раз(а). Последнее : AndyNigmatec, 22.03.18 22:15
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
AndyNigmatec

Сообщений: 1550
Откуда: Волгоград
Дата регистрации: 28.06.2015
Ну в том примере про rows XXXX у меня была возможность однозначно идентифицировать записи ... но мне не важен был порядок, важно было выполнение/невыполнения условия, а апдейтить сразу все попадающее как-то многовато выходило, нужно было частями ... ну так вот решил - может и криво/непрофессионально - но требуемого результата достиг
Ratings: 0 negative/0 positive
Re: SQL-UPDATE "первой" записи
of63
Автор

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Igor Korolyov
Для того о чём ты говоришь (100 абсолютно одинаковых банок) есть подходящие математические модели, скажем Мультимножество. Только они не через SQL управляются...

Этих моделей в КМ (в одинаковом виде - взаимокорреляция, и бозе-конденсация, и ферми-газ), и не в КМ нормально есть, просто вы все зациклились на обьектах с ID, в обьектах без ID вы не понимаете нисовсем, 2 страницы тупого совета TOP 1... Я понимал, что вопрос будет не понят, не ожидал, что уважаемые ребята будут биться за TOP 2 страницы... Ну, не 20 страниц, и это хорошо! )
Ratings: 0 negative/0 positive


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

On-line: 16 kornienko_ru  (Гостей: 15)

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