powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь с кодом
25 сообщений из 26, страница 1 из 2
Нужна помощь с кодом
    #39999676
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, есть задание - Написать запрос, позволяющий заполнить поле А таблицы X случайными значениями, находящимися между наименьшим и наибольшим значениями поля B таблицы Y.
Есть похожий скрипт для Oracle, но я не знаю как его переделать.Помогите пожалуйста.
BEGIN
FOR x IN (SELECT ID FROM TABLE_B ORDER BY ID)
LOOP
UPDATE TABLE_B
SET table_b."VALUE" = (SELECT MIN(TABLE_A."VALUE") KEEP (DENSE_RANK FIRST ORDER BY dbms_random.VALUE)
FROM TABLE_A
)
WHERE ID = TABLE_B.id;
END LOOP;
COMMIT;
END;
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999687
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.09.2020 10:49, maksimpojar пишет:
> Всем привет, есть задание

***, на всякий случай.
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999692
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar,

author24.biz
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999712
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar,

по мне так задача - сивый бред. зачем так учат sql...
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999713
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я не прошу готовый скрипт,мне бы хотя бы словами что надо сделать
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999714
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar
ну я не прошу готовый скрипт,мне бы хотя бы словами что надо сделать

Документацию почитай http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf
Тут всё написано. Или ты sql вообще не знаешь?
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999716
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
только базовые запросы вроде апдейта,инсерта и криейта.
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999719
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай в документации про процедуры и execute block, функции min, max, rand. Создавай базу и тренируйся на ней. Хоть что-нибудь на синтаксисе фб покажи, тогда поможем.
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999723
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar
только базовые запросы вроде апдейта,инсерта и криейта.


Ковязин, Востриков - Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999724
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar,

что там сложного? Берёшь таблицу, получаешь для поля MIN и MAX. Далее генерируешь случайное число между ними и добавляешь запись в другую таблицу.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
insert into TABLE_B(ID, "VALUE")
with t as (
select
  id,
  min("VALUE") over() as min_val,
  max("VALUE") over() as max_val
from TABLE_A)
select
  id,
  min_val + rand() * (max_val - min_val) as val
from t



если надо обновлять/добавлять переписываешь на merge
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999728
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar
только базовые запросы вроде апдейта,инсерта и криейта.


самый базовый это SELECT. Я сильно сомневаюсь, что ты знаешь его хорошо.
Надо знать SELECT/INSERT/UPDATE/DELETE/MERGE. Ну и синтаксис PSQL в целом.

По поводу CREATE я тоже сомневаюсь, что ты знаешь по памяти как создать любой объект метаданных, ну например триггер. Даже я это не всегда помню, но для этого есть документация и всякие IDE вроде IBE. А вот сложный SELECT за тебя ни одна IDE не сгенерирует
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999738
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо пойду пробовать,может быть разберусь.
Симонов Денис
maksimpojar,

что там сложного? Берёшь таблицу, получаешь для поля MIN и MAX. Далее генерируешь случайное число между ними и добавляешь запись в другую таблицу.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
insert into TABLE_B(ID, "VALUE")
with t as (
select
  id,
  min("VALUE") over() as min_val,
  max("VALUE") over() as max_val
from TABLE_A)
select
  id,
  min_val + rand() * (max_val - min_val) as val
from t



если надо обновлять/добавлять переписываешь на merge
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999827
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
видимо я совсем туп,немного правил код но выдает ошибку за ошибкой(.
При таком коде
merge into TABLE_B
using(
with t as (
select
id,
min("VALUE") over() as min_val,
max("VALUE") over() as max_val
from TABLE_A)
update
id,
min_val + rand() * (max_val - min_val) as val
from t)
выдаёт:can't format message 13:896 -- message file C:\WINDOWS\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, column 20.
(.
Хотя вроде как смотр синтаксис весь здесь - http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999832
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а кажется разобрался овер надо выкинуть он только для селектов
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999834
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojarвидимо я совсем туп,немного правил код но выдает ошибку за ошибкой
...
Хотя вроде как смотр синтаксис весь здесь

да не ужели? Как говорится найди 100500 отличий между той билибердой что вы написали и тем что описано в доке
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999841
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar,

1. внутри using должен быть валидный select запрос, он может в том числе содержать и with. Про over читай отдельно в разделе "Оконные функции". Вообще для начала узнай что это такое и как они работают, а не тупо копируй мой текст
2. после using (select ...) src должно быть условие связи между целевой таблицей и производной таблицей src ON <expr>
3. предложение insert должно следовать после предложения when not matched then
4. предложение update должно следовать после предложения when matched then
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999882
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я дико извиняюсь за свою назойливость и тупость,но ответы к сожалению я могу получить только здесь(.
Немного подправил его
но теперь выдает ошибку на with :can't format message 13:896 -- message file C:\WINDOWS\firebird.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 4, column 1.
with.

merge into TABLE_B
using TABLE_A
on table_a.id = table_b.id
with t as (
select
id,
min("VALUE") as min_val,
max("VALUE") as max_val
from TABLE_A)
WHEN MATCHED THEN
update
id,
min_val + rand() * (max_val - min_val) as val
from t)
Симонов Денис
maksimpojar,

1. внутри using должен быть валидный select запрос, он может в том числе содержать и with. Про over читай отдельно в разделе "Оконные функции". Вообще для начала узнай что это такое и как они работают, а не тупо копируй мой текст
2. после using (select ...) src должно быть условие связи между целевой таблицей и производной таблицей src ON <expr>
3. предложение insert должно следовать после предложения when not matched then
4. предложение update должно следовать после предложения when matched then
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999889
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojarНемного подправил его но теперь выдает ошибку

Не надо синтаксис SQL выдумывать из головы, читайте документацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999916
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что то я совсем запутался...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 merge into TABLE_B
using TABLE_A (
with t as (
select
  id,
  min("VALUE")  as min_val,
  max("VALUE")  as max_val
from TABLE_A))
on table_a.id = table_b.id
WHEN MATCHED THEN
update
  id,
  min_val + rand() * (max_val - min_val) as val
from t)


Вот код из руководства(опираюсь на который я редактировал этот):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
MERGE INTO numbers
USING (
 WITH RECURSIVE r(n) AS (
 SELECT 1 FROM rdb$database
 UNION ALL
 SELECT n+1 FROM r WHERE n < 200
 )
 SELECT n FROM r
) t
ON numbers.num = t.n
WHEN NOT MATCHED THEN
 INSERT(num) VALUES(t.n);
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999920
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojarопираюсь на который

Какой частью тела ты на него опирался когда написал нечто совершенно непохожее, я,
кажется, догадываюсь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999932
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну,я правда пытаюсь понять,но чем дальше лезу тем больше путаюсь(. Я так понимаю ошибка у меня после слова select.
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999939
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojar,но чем дальше лезу тем больше путаюсь(.

Так не лезь дальше. Вернись к азам и занимайся ими пока не освоишь. Начни с merge -
отдельно, select - отдельно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999942
maksimpojar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну к сожалению для начала мне все таки нужно разобраться с данной задачей(.
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999945
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.09.2020 16:20, maksimpojar пишет:
> ну к сожалению для начала мне все таки нужно разобраться с данной задачей(.

синхрофазотрон построить.
для начала.
а уж потом заняться изучением физики.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужна помощь с кодом
    #39999946
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maksimpojarдля начала мне все таки нужно разобраться с данной задачей(.

Ок, но для этого придётся сначала разобраться с синтаксисом merge отдельно и синтаксисом
select - отдельно.

После этого второй можно вставлять сразу после слова using в первом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь с кодом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]