2011-07-14 32 views
8

可以說我有內加入

(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排。我要的是內部聯接上:左=的名字:權人,這樣我只得到其在右側

匹配行的結果所以我拿到

   [{:name "Sean" :age 27 :item 「Beer」 } 
       {:name "Sean" :age 27 :item 「Pizza」 } 
       {:name "Ross" :age 27 :item 「Computer」}] 

任何想法。同樣想實現左右外連接,但這是分離問題。我正在學習clojure所以請忍受我

回答

8

明白了。我的壞

1:24 main-hta=> (clojure.set/join test-left test-right {:name :owner}) 

得到

#{{:item "Pizza", :owner "Sean", :name "Sean", :age 27} {:item "Beer", :owner "Sean", :name "Sean", :age 27} {:item "Computer", :owner "Ross", :name "Ross", :ag 
e 27}}