![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Есть таблицы T1(ID, DOCTYPE, DOCID, DOCITEM) и T2(ID, ID_T1, DOCTYPE, DOCID, DOCITEM).
T1.ID <=>> T2.ID_T1 То есть, в T2 ведётся история T1. Нужно составить запрос, который бы возвращал список T1.ID, в которых {T1.DOCTYPE, T1.DOCID, T1.DOCITEM} не соответствуют последним записям в T2. Это сообщение отредактировал(а) tishaishii - 18.2.2012, 18:03 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
В таблице остутствует штамп времени, соответственно неясно, что означает "последние"... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
nellyk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 19.2.2012 Репутация: нет Всего: нет |
SELECT T1.ID FROM T1,T2 WHERE T1.ID NOT IN (SELECT DISTINCT ID_T1 FROM T2) UNION SELECT T1.ID FROM T1, T2, (SELECT ID_T1, MAx(ID) AS ID_T2 FROM T2 GROUP BY ID_T1) T3 WHERE T1.ID=T3.ID_T1 AND T2.ID=T3.ID_T2 AND (T1.DOCTYPE <> T2.DOCTYPE OR T1.DOCID <> T2.DOCID OR T1.DOCITEM <> T2.DOCITEM) Сверху идентификаторы, отсутствующие в истории, снизу - те, у которых есть различия с последними "историческими" записями. |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
"Последнее" - это последняя запись.
Время - неоднозначный критерий. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Последняя при какой сортировке? потому как без сортировки такого понятия как "первая-последняя-прочее" не существует. Только если поле не уникально. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Обычно, по-умолчанию, упорядочивание выполняется по первичному ключу. PK, предполагаю как T1.ID и T2.ID, FK предполагаю как T2.ID_T1.
|
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
![]()
Задача сводится к нахождению последней записи в логе и сравнению с исходной таблицей. Подзадача "выбрать последнюю запись" имеет несколько вариантов http://www.sql.ru/forum/actualthread.aspx?tid=687908 Пожалуй, самый эффективный тут будет "бабушкин метод" Это сообщение отредактировал(а) Zloxa - 27.2.2012, 10:40 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
Ссылка на "бабушкин метод" пуста.
![]() Вобщем-то я задачу решил, может быть не самым эффективным способом, и закрыл возможность появления "нехороших" записей. Это сообщение отредактировал(а) tishaishii - 29.2.2012, 06:53 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |