Во втором скрипте надо зафиксировать таймстамп снапшота, либо через COMMIT, либо надо сделать выборку с блокировкой через SELECT ... LOCK IN SHARE MODE, таким образом вы получите свежую выборку данных.
InnerJoin - это просто джоин, который вы сами составляете (так же может быть и left и right)
Joinwith - это джоин заранее описанного релейшена в модели, будет выполнен одним запросом, в отличии от просто with