Допустим, у меня есть
(def test-left
[{:name "Sean" :age 27}
{:name "Ross" :age 27}
{:name "Brian" :age 22}])
и
(def test-right
[{:owner "Sean" :item "Beer"}
{:owner "Sean" :item "Pizza"}
{:owner "Ross" :item "Computer"}
{:owner "Matt" :item "Bike"}])
Когда я делаю (clojure.set/join test-left test-right)
, я получаю декартово произведение. 12 рядов. Что я хочу, так это Inner-join on: name of left =: owner of right, так что я получаю только те результаты, у которых совпадают строки в правой части
Так я получаю
[{:name "Sean" :age 27 :item “Beer” }
{:name "Sean" :age 27 :item “Pizza” }
{:name "Ross" :age 27 :item “Computer”}]
Любые идеи. Точно так же хотел бы получить левое и правое внешние соединения, но это отдельный вопрос. Я изучаю clojure, поэтому, пожалуйста, потерпите меня