Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Установление неявного соответствия между строками / 25 сообщений из 41, страница 1 из 2
25.06.2015, 08:07
    #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
25.06.2015, 11:06
    #38992382
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установление неявного соответствия между строками
Hello, Interloper!
You wrote on 25 июня 2015 г. 11:06:32:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А нам не нужно, чтобы ID были одинаковые у них. Нам важно, чтобы значения столбца A из T2 "спроецировались" на столбец A в T1 в том же порядке, что и в T2 при сортировке по ID.
...
Рейтинг: 0 / 0
25.06.2015, 12:47
    #38992489
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установление неявного соответствия между строками
Вот тебе Т1:
IDA1144
Вот тебе Т2:
IDA2233
Проецируй!
...
Рейтинг: 0 / 0
25.06.2015, 12:49
    #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
25.06.2015, 12:50
    #38992500
Interloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установление неявного соответствия между строками
Dimitry Sibiryakov,

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

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

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

ну так выложи решение. Или оно очень секретное
...
Рейтинг: 0 / 0
25.06.2015, 13:07
    #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
25.06.2015, 13:14
    #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
25.06.2015, 13:18
    #38992560
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Установление неявного соответствия между строками
Чуток меняем данные и решение становится не рабочим.

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


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