Hi Ray, First, I'd remove the print(ln)s from the functions. No need for side-effects there. Just have the functions return the result value and then when you call a2p-records-by-date you can wrap it in a println. Then you want to create a Map as the return value of the inner loop in a2p-records-by-date
(defn a2p-records-by-date [query from-date to-date dh-sub-query] (sql/with-connection db2 (sql/with-query-results rs [query from-date to-date] (doall (map #(hashmap :a2pid (:project_id %) :uuid (dh-sub-query (:project_id %))) rs))))) ; the doall is needed so the rs is completely consumed before (sql/with-query-results …) closes the connection (defn dh-records-by-a2p-id [query a2p-id] (sql/with-connection mssql (sql/with-query-results rs [query a2p-id] (:project_uuid (first rs))))) ; I'm assuming there's only zero or one :project_uuid for a given a2p-id. ; In the zero case, rs is an empty Seq, so (first rs) returns nil and (:project_uuid nil) is nil (defn dh-sub-query [a2p-id] (dh-records-by-a2p-id "select PROJECT_UUID from PROJECT where A2P_PROJECT_ID = ?" a2p-id)) (println (a2p-records-by-date "select project_id from PROJECT where timestamp > ? and timestamp < ?" "2012-03-02" "2012-03-07" dh-sub-query)) Of course, I haven't tested any of this, so plenty of opportunity for mistakes. Marc On Fri, May 24, 2013 at 10:55 AM, Mond Ray <mondraym...@gmail.com> wrote: > I am starting out to use Clojure to combine and verify data between DB2 on > a Mainframe, SQL Server and an Atom Feed. Yes, it's such fun working in a > start-up ;-) > > Database wise, all is connecting OK after some Leiningen shenanigans and I > am now stuck on the mapping part ;-) > > The code is below. I want to generate a set of maps that show the > following: > > #({:a2pid 269, :uuid nil} > {:a2pid 270, :uuid nil} > {:a2pid 258, :uuid nil} > {:a2pid 261, :uuid nil} > {:a2pid 251, :uuid E7D4262C-62B3-4129-9CE4-B342DC1C39FC}) > > The idea is to have a list of maps that can show where there are gaps > between the two DBs and, coming next, the Atom feed. > > It is essentially a join operation - and maybe that's what I need but I > cannot figure out where to plonk the magic words. > > (defn a2p-records-by-date [query from-date to-date dh-sub-query] > (sql/with-connection db2 > (sql/with-query-results rs [query from-date to-date] > (doseq [row rs] (println (str " " (:project_id row) (dh-sub-query > (:project_id row)))))))) > > (defn dh-records-by-a2p-id [query a2p-id] > (sql/with-connection mssql > (sql/with-query-results rs [query a2p-id] > (dorun (map #(print (:project_uuid %)) rs))))) > > (defn dh-sub-query [a2p-id] (dh-records-by-a2p-id "select PROJECT_UUID > from PROJECT where A2P_PROJECT_ID = ?" a2p-id)) > > (a2p-records-by-date "select project_id from PROJECT where timestamp > ? > and timestamp < ?" "2012-03-02" "2012-03-07" dh-sub-query) > > The output looks like this, so I am close! > > 269 > 270 > 258 > 261 > E7D4262C-62B3-4129-9CE4-B342DC1C39FC 251 > > Can anyone help me out about how to generate the maps? > > This is just the start as I have many queries to run for many entities, so > doubtless I will be back again ;-) > > Thanks in advance > > Ray > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.