Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.04.07;
Скачать: [xml.tar.bz2];

Вниз

Не выполняется SQL запрос   Найти похожие ветки 

 
ixen   (2012-10-02 09:47) [0]

Всем привет! Подскажите почему не выполняется следующий запрос на Firebird 2.5
update tov_usl set use_as_mat=1 where id in (select why_id from moves where type_doc="M" group by why_id)

Суть запроса в следующем. Надо из таблицы moves выбрать записи по указанному условию и убрать строки с одинаковыми значениями why_id? т.е. оставить только по одному значению. Сам по себе вложенный Select выполняется без ошибки. Затем нужно обновить записи в другой таблице, где значение поля id входит в результат вложенного селекта.

Я не силен в запросах, подскажите как правильно


 
ixen   (2012-10-02 09:49) [1]

забыл написать, в IBExpert пишет такую ошибку
Plan
PLAN SORT ((MOVES NATURAL))
PLAN (TOV_USL NATURAL)


 
Ega23 ©   (2012-10-02 10:08) [2]


>  и убрать строки с одинаковыми значениями why_id?


distinct + F1


> подскажите как правильно


Вместо group by поставь distinct. А так, вроде, всё правильно.


 
AV ©   (2012-10-02 10:52) [3]


> select why_id from moves where type_doc="M" group by why_id

нет аггрегации ?
group by юзается, если надо кол-во, сумма, среднее, etc.
а ты чего ищешь? ничего

да там и дистинкт не нужен даже


 
Ega23 ©   (2012-10-02 10:58) [4]


> да там и дистинкт не нужен даже


Лучше впердолить. Хотя я что-то отстал от прогресса, мож сейчас оптимизаторы умные пошли...


 
ixen   (2012-10-02 11:01) [5]

заменил вложенный селект с применением distinct
select distinct why_id from moves where type_doc="M"
дал то что мне нужно...вложил в update
update tov_usl set use_as_mat=1 where id in (select distinct why_id from moves where type_doc="M")
и та же самая ошибка что и в первом случае
Plan
PLAN SORT ((MOVES NATURAL))
PLAN (TOV_USL NATURAL)


 
Ega23 ©   (2012-10-02 11:06) [6]

Синтаксически я никаких ошибок не вижу.
И, кстати, текст ошибки давай.


 
ixen   (2012-10-02 11:13) [7]

блин.. ступил.. все работает.. спасибо ребята..


 
Ega23 ©   (2012-10-02 11:16) [8]

Commit забыл? :)))


 
AV ©   (2012-10-02 12:02) [9]


> Ega23 ©   (02.10.12 10:58) [4]
> > да там и дистинкт не нужен даже
> Лучше впердолить. Хотя я что-то отстал от прогресса, мож
> сейчас оптимизаторы умные пошли...

да... там зависит от плана.. какие индексы, как будет искать

но следует всегда проверять возможность  exists | not exists
аля
update
 tov_usl TU
set
 TU.use_as_mat=1
where
 exists (select
              M.why_id
          from
             moves M
          where
            type_doc="M"
            and why_id = id)


 
AV ©   (2012-10-02 12:02) [10]


>           from
>              moves M
>           where
>             M.type_doc="M"
>             and M.why_id = TU.id)


 
ixen   (2012-10-02 13:01) [11]


> Ega23 ©   (02.10.12 11:16) [8]
> Commit забыл? :)))

ага :))


 
Ega23 ©   (2012-10-02 13:17) [12]


> ага :))


Бывает, чо...  :)


 
AV ©   (2012-10-02 13:45) [13]


> Бывает, чо...  :)

ага :)

Один раз, в PL/SQL, тоже не закоммитил, вышел аварийно, потом сколько-то дней прошло, пока понял, что  промежуточная таблица итогов порушена логически.

и до сих пор, бывает, не нажимаю  "получить все записи", потом строю сводную  и думаю, что же это не сходится то со вчерашним днем.. :)


 
Кщд   (2012-10-03 09:46) [14]

>ixen   (02.10.12 11:01) [5]
план запроса - фиговый
прежде, чем писать group by/distinct, хорошо бы отдавать себе отчет, а - собственно - для чего?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
15-1354874380
yurikon
2012-12-07 13:59
2013.04.07
Официально бесплатный релиз делфи


15-1354912202
Юрий
2012-12-08 00:30
2013.04.07
С днем рождения ! 8 декабря 2012 суббота


2-1349233768
Abcdef123
2012-10-03 07:09
2013.04.07
Отчего Разное поведение свойства TEdit.Enabled?


15-1355227400
O'ShinW
2012-12-11 16:03
2013.04.07
Предлагаю турнир по шахматам. Блиц.


15-1355171457
Юрий
2012-12-11 00:30
2013.04.07
С днем рождения ! 11 декабря 2012 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский