Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь с кодом / 25 сообщений из 26, страница 1 из 2
17.09.2020, 10:49
    #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
17.09.2020, 11:00
    #39999687
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с кодом
17.09.2020 10:49, maksimpojar пишет:
> Всем привет, есть задание

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

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

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

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


Ковязин, Востриков - Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
...
Рейтинг: 0 / 0
17.09.2020, 11:53
    #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
17.09.2020, 12:00
    #39999728
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с кодом
maksimpojar
только базовые запросы вроде апдейта,инсерта и криейта.


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

По поводу CREATE я тоже сомневаюсь, что ты знаешь по памяти как создать любой объект метаданных, ну например триггер. Даже я это не всегда помню, но для этого есть документация и всякие IDE вроде IBE. А вот сложный SELECT за тебя ни одна IDE не сгенерирует
...
Рейтинг: 0 / 0
17.09.2020, 12:14
    #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
17.09.2020, 14:31
    #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
17.09.2020, 14:36
    #39999832
maksimpojar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с кодом
а кажется разобрался овер надо выкинуть он только для селектов
...
Рейтинг: 0 / 0
17.09.2020, 14:37
    #39999834
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с кодом
maksimpojarвидимо я совсем туп,немного правил код но выдает ошибку за ошибкой
...
Хотя вроде как смотр синтаксис весь здесь

да не ужели? Как говорится найди 100500 отличий между той билибердой что вы написали и тем что описано в доке
...
Рейтинг: 0 / 0
17.09.2020, 14:43
    #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
17.09.2020, 15:18
    #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
17.09.2020, 15:22
    #39999889
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с кодом
maksimpojarНемного подправил его но теперь выдает ошибку

Не надо синтаксис SQL выдумывать из головы, читайте документацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.09.2020, 15:52
    #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
17.09.2020, 15:56
    #39999920
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь с кодом
maksimpojarопираюсь на который

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

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

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

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

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

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


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