我想知道这在SQL中是否可行.假设您有两个表A和B,并在表A上执行选择并在表B上进行连接:
SELECT a.*, b.* FROM TABLE_A a JOIN TABLE_B b USING (some_id);
Run Code Online (Sandbox Code Playgroud)
如果表A包含列'a_id','name'和'some_id',而表B包含'b_id','name'和'some_id',则查询将返回列'a_id','name','some_id ','b_id','name','some_id'.有没有办法为表B的列名添加前缀而不单独列出每一列?相当于:
SELECT a.*, b.b_id as 'b.b_id', b.name as 'b.name', b.some_id as 'b.some_id'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);
Run Code Online (Sandbox Code Playgroud)
但是,如上所述,没有列出每一列,所以类似于:
SELECT a.*, b.* as 'b.*'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);
Run Code Online (Sandbox Code Playgroud)
基本上可以说,"b.*返回的每一列都带有'某事'".这可能还是我运气不好?
在此先感谢您的帮助!
编辑:不使用SELECT*等建议是有效的建议,但在我的上下文中不相关,所以请坚持手头的问题 - 是否可以添加前缀(SQL查询中指定的常量)给所有连接中表的列名?
编辑:我的最终目标是能够在两个带连接的表上执行SELECT*,并且能够从我在结果集中获得的列的名称中说明哪些列来自表A以及哪些列来自哪些列从表B.再次,我不想单独列出列,我需要能够做一个SELECT*.
是否有一个中等大小的Clojure示例应用程序可以用作"最佳实践"示例,并且是一种很好的方法来查看这样的应用程序在代码和代码组织方面会是什么样子?Web应用程序对我来说特别有趣,但最重要的是该程序执行一些通常有用的东西(例如,博客,错误跟踪,CMS),而不是我从未在真实中实现过的数学世界(解决N-queens问题,模拟生命,生成Fibonacci序列,以及功能编程语言的常用功能).
谢谢!
我花了一些时间为Eclipse中的语法高亮显示自定义颜色(Java,JSP,HTML,CSS等),但每当我尝试通过文件|导出|常规|首选项导出这些设置并重新导入它们时,设置永远不会完全导入背部.一些颜色被恢复,其他颜色保持不变,让我处于"中间"状态 - 非常令人沮丧.
顺便说一句,我正在使用Eclipse 3.4 Ganymede.
有没有人找到一种可靠的方法来保存和恢复Eclipse语法高亮设置?
我有一个java.util.HashMap对象m(调用Java代码的返回值),我想获得一个带有附加键值对的新映射.
如果m是Clojure地图,我可以使用:
(assoc m "key" "value")
Run Code Online (Sandbox Code Playgroud)
但试着这样做HashMap:
java.lang.ClassCastException:java.util.HashMap无法强制转换为clojure.lang.Associative
没有运气seq:
(assoc (seq m) "key" "value")
Run Code Online (Sandbox Code Playgroud)
java.lang.ClassCastException:clojure.lang.IteratorSeq无法强制转换为clojure.lang.Associative
我设法做到的唯一方法是使用HashMap自己的put,但返回void所以我必须明确返回m:
(do (. m put "key" "value") m)
Run Code Online (Sandbox Code Playgroud)
这不是惯用的Clojure代码,m而是我正在修改而不是创建新的地图.
如何HashMap使用更多Clojure-ish方式?
interop clojure hashmap purely-functional clojure-java-interop
除了在书本特色示例应用程序开始Groovy和Grails和权威指南Grails的,是有是从中学习最佳实践很好的例子写的Grails那里的任何应用程序?比如开源的真实应用?谢谢.
好的,现在不要作弊.
不,真的,花一两分钟试试这个.
"职位"有什么作用?
编辑:根据cgrand的建议进行简化.
(defn redux [[current next] flag] [(if flag current next) (inc next)])
(defn positions [coll]
(map first (reductions redux [1 2] (map = coll (rest coll)))))
Run Code Online (Sandbox Code Playgroud)
现在,这个版本怎么样?
def positions(coll) {
def (current, next) = [1, 1]
def previous = coll[0]
coll.collect {
current = (it == previous) ? current : next
next++
previous = it
current
}
}
Run Code Online (Sandbox Code Playgroud)
我正在学习Clojure,我很喜欢它,因为我一直很喜欢函数式编程.我花了更长的时间来提出Clojure解决方案,但我很高兴不得不考虑一个优雅的解决方案.Groovy解决方案没问题,但我发现这种命令式编程很无聊和机械化.经过12年的Java,我觉得Clojure的功能和编程是我需要的提升.
对,明白了.好吧,我必须诚实地说,我想知道我几个月后回到它时是否会理解Clojure代码.当然,我可以评论它,但我不需要评论我的Java代码来理解它.
所以我的问题是:这是一个越来越习惯函数式编程模式的问题吗?函数式编程大师是否正在阅读此代码并轻松理解它?您觉得哪个版本更容易理解?
编辑:这段代码的作用是根据玩家的积分计算玩家的位置,同时跟踪那些被捆绑的玩家.例如:
Pos Points
1. 36
1. 36
1. 36
4. …Run Code Online (Sandbox Code Playgroud) groovy functional-programming clojure imperative-programming
我有一个Team具有Integer seed属性的对象列表.我想一次性编辑所有球队的种子.我确信 Grails支持索引参数,但我无法让它工作.
这里是我有什么,和它的作品,但我通过跳跃的方式太多铁圈和有一定有一个更好的办法.
GSP:
<g:form action="setSeeds">
...
<g:each in="${teams}" status="i" var="team">
<input type="hidden" name="teams[${i}].id" value="${team.id}">
<input type="text" size="2" name="teams[${i}].seed" value="${team.seed}">
</g:each>
</g:form>
Run Code Online (Sandbox Code Playgroud)
控制器:
def setSeeds = {
(0..<30).each { i ->
def team = Team.get(Integer.parseInt(params["teams[${i}].id"]))
team.seed = Integer.parseInt(params["teams[${i}].seed"])
}
redirect(action:list)
}
Run Code Online (Sandbox Code Playgroud)
这不是很糟糕吗?太吵了.我怎样才能做到以下几点:
params.teams.each { t ->
def team = Team.get(t.id)
team.seed = t.seed
}
Run Code Online (Sandbox Code Playgroud)
也就是说,我该如何映射命名PARAMS team[0].seed,team[0].id,team[1].seed,team[1].id到清单?
在Stripes中你可以拥有一个List<Team>属性,它就可以工作了.我希望Grails不会少!;-)
在此先感谢您的帮助.
当我将此代码粘贴到REPL中时,它可以正常工作:
(use 'clojure.contrib.seq-utils)
(defn- random-letter [] (char (+ (rand-int 26) 97)))
(defn- random-digit [] (rand-int 10))
(defn- random-password
"Returns an 8-character password consisting of letters and digits as follows: aa1aa1aa"
[]
(let [password (interpose '((random-digit)) (repeat 3 (repeat 2 '(random-letter))))]
(apply str (flatten (map (fn [coll] (map eval coll)) password)))))
Run Code Online (Sandbox Code Playgroud)
现在,我有这个代码:gen-class :implements [my.ServiceInterface]和一个前缀函数-来实现接口.我使用Maven/Groovy/TestNG进行单元测试.其他几个接口/ Clojure实现一切正常,但在这种特殊情况下,我得到这个错误:
java.lang.RuntimeException:
java.lang.Exception: Unable to resolve symbol: random-letter in this context (NO_SOURCE_FILE:32)
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么.我能告诉的唯一一点就是这个函数与所有其他函数的不同之处在于,这是我使用引用的唯一地方,即'((random-digit))和'(random-letter).编辑:此外,这是我唯一使用的地方eval.
我尝试将函数定义为"非私有"(defn而不是defn- …
请原谅我,我会尽力描述我在寻找什么.我没有它的名字,所以它使它变得更加困难.
纵观库,如民间故事和monet.js,我喜欢能够连锁经营有map没有空置检查或if语句,例如使用Maybe,Either,Task.
我想知道是否存在类似的构造来解决以下问题:
mapping一个函数Maybe.Nothing)换句话说,我正在寻找类似于Maybe保存值并映射函数Just但忽略映射的函数的东西Nothing,并且您可以提取值.我正在寻找能够保持输入和初始null结果的东西.当你map是一个函数时,只有在result为null时它才会在输入上运行函数.如果函数返回一个值,则该值将成为结果,并且将忽略映射的任何其他函数.最后,您可以提取结果.
在命令式编程中,这可能如下所示:
var result1 = function1(input);
if (result1) {
return result1;
}
var result2 = function2(input);
if (result2) {
return result2;
}
// and so on.
Run Code Online (Sandbox Code Playgroud)
相反,我想构建一些类似的东西
Something(input).map(function1).map(function2).result()
Run Code Online (Sandbox Code Playgroud)
要么
compose(result, map(compose(function2, function1))(Something(input))
Run Code Online (Sandbox Code Playgroud)
这样的结构是否存在?它有名字吗?即使这不存在而且我可以自己写,我也不知道该怎么称呼它.建议欢迎.
谢谢你的帮助!
UPDATE
按照@Bergi的解决方案,我用了Maybe.orElse.我写了一个小帮手ShortCircuit,我在下面发帖,以防有人发现这个有用.
import …Run Code Online (Sandbox Code Playgroud) javascript monads functional-programming terminology functor
我一直在探索民间故事库,并找到了大量有用的结构.通过control.async和data.task使用Tasks之后,我想使用IO monad,但似乎无法找到它.考虑到民间故事的丰富程度,我很惊讶并且想知道我是否只是没有看到它.
民间故事中是否有IO monad?