powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Установление неявного соответствия между строками
25 сообщений из 41, страница 1 из 2
Установление неявного соответствия между строками
    #38992204
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеются две таблицы T1, T2 с одинаковым набором полей: ID (INTEGER, PRIMARY KEY) и A (INTEGER). Значения ID двух таблиц никак не связаны между собой. Таблицы содержат одинаковое количество записей. Требуется одним запросом обновить значение поля A таблицы T1 так, чтобы следующие запросы возвращали одинаковый результат с точностью до порядка записей:
Код: sql
1.
SELECT A FROM T1 ORDER BY ID


Код: sql
1.
SELECT A FROM T2 ORDER BY ID



Версия Firebird: 1.5 .
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992382
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Interloper!
You wrote on 25 июня 2015 г. 11:06:32:

Interloper> Требуется одним запросом...
Версия Firebird: 1.5.обломись.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992388
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

делай ХП и вызывай её одним запросом
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992398
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов Денисделай ХП и вызывай её одним запросом
Ещё можно сделать EXECUTE BLOCK, одним запросом.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992400
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Симонов Денисделай ХП и вызывай её одним запросом
Ещё можно сделать EXECUTE BLOCK, одним запросом.

МимопроходящийHello, Interloper!
You wrote on 25 июня 2015 г. 11:06:32:

Interloper> Требуется одним запросом...
Версия Firebird: 1.5. обломись .
Выделил для анонимных слабозрячих.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992404
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
miwaonlineВыделил для анонимных слабозрячих.
Респект от анонимных слабозрячих :)
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992424
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Боюсь, обломаться придется тебе, потому что решение есть и оно работает на 1.5.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992429
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperМимопроходящий,
Боюсь, обломаться придется тебе, потому что решение есть и оно работает на 1.5.

Решение одним запросом в студию.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992448
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Граур Станислав,

А самому подумать?
Решение я приведу, если никто не выложит его раньше.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992452
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

т.е. ты загадки тут задаешь?
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992461
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

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

нам оно тожеинтересно. Ибо как это сделать в 1.5 одним запросом без ХП я не представляю.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992466
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

А в чем принципиальная сложность сделать это в 1.5, по-вашему?
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992472
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

сложность в формулировке. Я вот вижу только один способ грохнуть всё из T1 и залить в неё записи из T2.
Ибо условие

> Значения ID двух таблиц никак не связаны между собой.

Что в T1 могут быть такие ID которых нет в T2 и наоборот.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992485
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

А нам не нужно, чтобы ID были одинаковые у них. Нам важно, чтобы значения столбца A из T2 "спроецировались" на столбец A в T1 в том же порядке, что и в T2 при сортировке по ID.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992489
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тебе Т1:
IDA1144
Вот тебе Т2:
IDA2233
Проецируй!
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992495
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример.
Таблица T1:
ID A
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0

Таблица T2:
ID A
2 1
3 2
5 3
7 4
11 5
13 6
17 7
19 8
23 9
29 10

После выполнения запроса таблица T1 должна иметь вид:
ID A
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992500
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Должно получиться:
1 2
4 3
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992515
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperДолжно получиться:
А не получится. Нет способа сделать это в 1.5 одним запросом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992519
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

На чем основано данное утверждение? У меня получилось.
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992520
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperУ меня получилось.

Значит ты либо чего-то не учёл, либо нарушил одно из условий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992526
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

ну так выложи решение. Или оно очень секретное
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992532
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм. А проще вот этого можно?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create or alter procedure PRC
as
declare variable A_T2 integer;
declare variable ID_T1 integer;
declare variable i integer;
begin
  i = 0;
  --Сортируем по id
  for select a from t2 order by id into :a_t2 do
  begin
     -- c помощью skip берем id из нужной строки
     select first 1 skip (:i) id from t1 order by id into :id_t1;

     -- Обновляем :-)
     update t1 set t1.a = :a_t2 where t1.id = :id_t1;
     i = i+1;
  end
end
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992551
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот решение:

Код: sql
1.
2.
UPDATE T1 T11
SET T11.A = (SELECT FIRST 1 SKIP ((SELECT COUNT(1) FROM T1 T12 WHERE T12.ID<T11.ID)) T2.A FROM T2 ORDER BY T2.ID)
...
Рейтинг: 0 / 0
Установление неявного соответствия между строками
    #38992560
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуток меняем данные и решение становится не рабочим.

Вот тебе Т1:
IDA1144
Вот тебе Т2:
IDA5233
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Установление неявного соответствия между строками
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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