Я думаю, тебе нужно not exists
:
with cte as (
select t1.code, t1.itemno, t2.value
from table1 t1 inner join
table2 t2
on t1.itemno = t2.itemno
)
select c.*
from cte c
where not exists (select 1 from cte c1 where c1.code = c.code and c1.value <> 'S')
Если бы Вы просто ищете простой RPC и обмен сообщениями, я пошел бы с Пламенем. Реализации являются более сформировавшимися и лучше доказанный, особенно относительно обмена сообщениями. Обмен сообщениями в Граните основан на Комете и все еще довольно новый от того, что я помню. Больше деталей ниже...
DS пламени является в основном стеком, который включает RPC и некоторые простые службы обмена сообщениями по HTTP. Интеграция с Spring достигается легко с помощью реализации SpringFactory FlexFactory: просто погуглите имя класса, и Вы найдете код. Это не предлагает дополнительной поддержки вещей, в спящем режиме связанные.
Гранит DS растет быстро с точки зрения функций. Это конкурирует больше с LCDS, чем Пламя DS. Это включает способность проанализировать, в спящем режиме графы объектов и соглашение с ленивыми прокси чистым способом. У них также есть инструмент под названием "Поток", который создает аналог Сессии в клиенте Flex для обеспечения уникальности объектов. У них также есть явная поддержка сервисов, подвергнутых через Spring, EJB3 и Шов. Гранит также имеет утилиту для генерации классов AS3 от Ваших классов Java (хотя это не трудно для записи себя, если Вы хотите к).
Я работал с Гранитом приблизительно год назад и имел некоторые проблемы при получении его, правильно анализируют графы объектов; Flash player выдал бы некоторые противные исключения низкого уровня. Мое предположение - то, что документация и реализация назрели с тех пор так, чтобы они больше не были проблемами. Однако я все еще немного не решаюсь рекомендовать это, так как я столкнулся с проблемами и переключающийся для Сверкания сразу разрешенный их без проблемы вообще.