Sql Clojure-从单独的数据库中联合两个查询
我正在查询两个独立的数据库,想知道如何正确地合并这两个数据库的结果-如果我打印“joined”语句,SQL关键字union将与查询结果一起打印出来。尽管如果我打印“formatted”语句,我只会得到很多逗号,而不是我想要返回的数据,它们之间用逗号分隔。我已经产生的代码如下,提前感谢Sql Clojure-从单独的数据库中联合两个查询,sql,clojure,Sql,Clojure,我正在查询两个独立的数据库,想知道如何正确地合并这两个数据库的结果-如果我打印“joined”语句,SQL关键字union将与查询结果一起打印出来。尽管如果我打印“formatted”语句,我只会得到很多逗号,而不是我想要返回的数据,它们之间用逗号分隔。我已经产生的代码如下,提前感谢 dbquery1 (str "SELECT * FROM database1 WHERE xx") dbquery2 (str "SELECT * FROM database2 WHERE xx") joined
dbquery1 (str "SELECT * FROM database1 WHERE xx")
dbquery2 (str "SELECT * FROM database2 WHERE xx")
joined (str dbquery1 " UNION " dbquery2)
formatted (str-join \, (sort (map :data joined)))
然后返回的结果如下所示:
({:data "result1"}) UNION ({:data "result2"} {:data "result3"} {:data "result4"})
我期待着:
({:data "result1"} {:data "result2"} {:data "result3"} {:data "result4"})
您使用的是字符串,而不是数据库结果。您没有映射,因此当您对字符串调用(map:data x)时,您会得到一个nil列表,然后将其加入。为什么要将所有内容转换为字符串?先做你想做的手术,如果需要打印,请将数据转换为字符串。请问为什么不在SQL查询中使用UNION,然后对结果进行分解?我使用的编译器要求明确指定连接详细信息,因此需要单独运行查询,还需要将SQL语句转换为串。谢谢你。因此,输出准确地告诉您发生了什么:您从查询函数返回两个seq,然后将seq与它们之间的单词“UNION”连接起来。你现在让我猜不透,但也许你可以试试(读字符串):。如果所有其他方法都失败了,也许你可以尝试使用Korma,或者你将不得不使用一个函数来分解seqs并模拟联合。啊,好的,非常感谢,我从来没有听说过Korma,尽管快速浏览一下它看起来非常有用。我会试试的,再次谢谢!