powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор неповторяющихся значений из нескольких таблиц
10 сообщений из 10, страница 1 из 1
Выбор неповторяющихся значений из нескольких таблиц
    #38568573
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня. Натолкните плиз на правильный путь. Дано:
Firebird 2.5 и таблицы:

Главная таблица

Main_Table
ID NAME N_PART 1 Уголок равнополочный партия № 315 2 Уголок равнополочный партия № 100

и дочерние:

HARDNESS_Table
ID_MAIN ID HARDNESS1 HARDNESS2 1 1 35.0 11.2 1 2 23.5 10.58 1 3 12.7 34.21 2 1 35.0 11.2 2 2 23.5 10.58 2 3 12.7 34.21

TENSION_Table
ID_MAIN ID TENSION1 TENSION2 TENSION3 1 1 0.1 0.15 значение 1 1 2 0.3 0.17 значение 2 1 3 0.2 0.17 значение 1 2 1 0.1 0.12 значение 1 2 2 0.3 0.15 значение 3 2 3 0.6 0.12 значение 1

на самом деле дочерних таблиц больше - но для демонстрации принципа думаю достаточно. Так вот задача:

Нужно из главной таблицы вывести только те строки, для которых наборы атрибутов в дочерних таблицах отличаются. Неодинаковое количество строк в дочерних таблицах тоже считается различием.
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568768
venoel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanyxa,

1. Получить множество Main_Table, с которыми работать (М1).
2. Получить набор уникальных свойств по одному критерию (по HARDNESS_Table например) (R1).
3. Используя R1 и М1 получить номер Main_Table.id (N1) (
Код: plsql
1.
2.
3.
4.
 for each R1
 select first 1 
 from HARDNESS_Table 
 where id_main in (M1) and HARDNESS1, HARDNESS2 in (R1)

)
4. Записать N1 в множество М2
5. Повторить п.1 для следующей дочерней таблицы.


М1 R1 М2
1 12.3 123.6 45.5 1
2 123.34 23 17 2
3

R2
12 13 134
5 56 56
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568777
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
venoel,

это вы ля какой субд такой запрос написали? Лично я вовсе не понял чего автор хотел.
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568799
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanyxaвывести только те строки, для которых наборы атрибутов в дочерних таблицах
отличаются
Отличаются от чего?

По-любому, full outer join + having count должны бы помочь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568853
Фотография tanyxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уточняю суть вопроса. Нужно отобрать только те записи из главной таблицы, для которых атрибуты перечисленные в дочерних таблицах разные. Например если у уголка из партии 315 все записи в таблицах HARDNESS_Table и
TENSION_Table такие же как у уголка из партии 100 - то нужно показать только одну запись - либо уголок партии 315, либо партии 100. В противном случае - показать обе записи
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568863
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanyxa,

тут поможет обычный distinct
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568877
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистут поможет обычный distinct
Не поможет если не аггрегировать записи из дочерних таблиц. Придётся писать такой
навороченный и тормозной запрос, что я его даже придумать сходу не могу. Что-то с NOT
EXISTS и уже вышеназнанными full outer join + count(distinct).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568901
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что-то вот такое????

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select m1.* from Main_Table m1
left join Main_Table m2 on m1.name=m2.name and m1.id <> m2.id

left join HARDNESS_Table h1 on h1.ID_MAIN=m1.id
left join HARDNESS_Table h2 on h2.ID_MAIN=m2.id and h2.id<>h1.id 

left join TENSION_Table  t1 on t1.ID_MAIN=m1.id
left join TENSION_Table  t2 on t2.ID_MAIN=m2.id and t2.id<>t1.id 

where m2.id is null or  h1.HARDNESS1 <> h2.HARDNESS1 or h1.HARDNESS2 <> h2.HARDNESS2 or t1.TENSION1 <> t2.TENSION1
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568907
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

боюсь этот запрос будет дико тормозить даже при небольшом количестве данных
...
Рейтинг: 0 / 0
Выбор неповторяющихся значений из нескольких таблиц
    #38568916
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисm7m,

боюсь этот запрос будет дико тормозить даже при небольшом количестве данных
как то неуверенно ты написал
Он точно будет тормозить.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выбор неповторяющихся значений из нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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