DB2 присоединяется к трудностям
У меня следующая ситуация (упрощенно):
2 таблицы BiTemp
- basicdata (id, btmp_tsd, name, prename)
- расширенные данные (id, btmp_tsd, basicid, кодовое имя, кодовое значение)
В расширенных данных могут быть многократные записи для одних базовых данных с разными кодовым именем и значением.
Я должен создать SQL, чтобы выбрать все строки, которые изменились с указанного времени. Для таблицы базовых данных это относительно просто:
SELECT ID, BTMP_TSD, NAME, PRENAME
FROM BASICDATA BD
WHERE BTMP_TSD =
(SELECT MAX(BTMP_TSD)
FROM BASICDATA BD2
WHERE BD2.ID = BD.PRTNR_ID
AND BD2.BTMP_TSD > :MINTSD
AND BD2.BTMP_TSD <= :MAXTSD
)
ORDER BY ID
WITH UR
Теперь мне нужно присоединиться ко второй таблице, чтобы получить кодовое значение для кодового имени 'test'. Проблема в том, что она может не существовать, в этом случае строка должна быть собрана в любом случае. Но если есть ряд, но не в пределах временного диапазона, я не должен получить результат.
Я надеюсь, что смог объяснить мою проблему. Соединения - это одна из вещей, которую я до сих пор не вижу...
Изменить: Хорошо, вот образец
basicdata:
id,btmp_tsd,name,prename
1,2013-05-25,test,user
2,2013-06-26,user,two
3,2013-06-26,peter,hans
1,2013-06-20,test,us3r
2,2013-10-30,us3r,two
extendeddata:
id,btmp_tsd,basicid,codename,codevalue
1,2013-05-25,1,superadmin,1
2,2013-06-26,3,admin,1
3,2013-11-25,1,superadmin,0
Хорошо, теперь есть эти записи, и я хочу, чтобы все идентификаторы пользователей, которые имели какие-либо изменения с 2013-10-01, я должен получить
User1 (потому что в расширенном суперпредставлении данных произошли изменения)
Пользователь2 (было изменение имени, и я хочу, чтобы он даже жестко не имел записи в таблице расширенных данных)
не User3 (у него есть записи в обеих таблицах, но он не находится в указанном диапазоне)
1 ответ
Следующий запрос должен делать то, что вы хотите.
select *
from basicdata b left outer join extendeddata e on b.id=e.basicid
where b.btmp_tsd >= '2013-10-01'
or e.btmp_tsd >= '2013-10-01'
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не тестировал SQL. Так что синтаксис не может быть на 100% идеальным.