小编fro*_*die的帖子

两次加入同一张桌子的最佳方法是什么?

这有点复杂,但我有2张桌子.假设结构是这样的:

*Table1*
ID
PhoneNumber1
PhoneNumber2

*Table2*
PhoneNumber
SomeOtherField
Run Code Online (Sandbox Code Playgroud)

可以基于Table1.PhoneNumber1 - > Table2.PhoneNumber或Table1.PhoneNumber2 - > Table2.PhoneNumber来连接表.

现在,我想得到一个结果集,其中包含PhoneNumber1,SomeOtherField,它对应于PhoneNumber1,PhoneNumber2和SomeOtherField,对应于PhoneNumber2.

我想到了两种方法 - 通过两次加入表,或者在ON子句中加入OR一次.

方法1:

SELECT t1.PhoneNumber1, t1.PhoneNumber2, 
   t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
   ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
   ON t3.PhoneNumber = t1.PhoneNumber2
Run Code Online (Sandbox Code Playgroud)

这似乎有效.

方法2:

以某种方式有一个看起来有点像这样的查询 -

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber
Run Code Online (Sandbox Code Playgroud)

我还没有得到这个工作,我不确定是否有办法做到这一点.

实现这一目标的最佳方法是什么?这两种方式都不简单或直观......有没有更简单的方法来做到这一点?这个要求一般如何实施?

sql join

99
推荐指数
3
解决办法
17万
查看次数

仅当字符串不为null或为空时才使用分隔符连接字符串

这感觉它应该很简单,很抱歉,如果我在这里遗漏了一些东西,但我试图找到一种简单的方法来连接非空或非空字符串.

我有几个不同的地址字段:

var address;
var city;
var state;
var zip;
Run Code Online (Sandbox Code Playgroud)

这些值的设置基于页面中的某些表单字段和其他一些js代码.

我想输出一个div由逗号+空格分隔的完整地址,所以像这样:

$("#addressDiv").append(address + ", " + city + ", " + state + ", " + zip);
Run Code Online (Sandbox Code Playgroud)

问题是,这些字段中的一个或全部可能为空/空.

是否有任何简单的方法可以连接这组字段中的所有非空字段,而无需在将其添加到字符串之前单独检查每个字段的长度?

javascript string

93
推荐指数
5
解决办法
6万
查看次数

JUnit中的失败和错误有什么区别?

我正在大型代码库上运行JUnit测试,我一直意识到有时候我会得到"错误",而有时我会得到"失败".有什么不同?

java testing junit

85
推荐指数
4
解决办法
5万
查看次数

程序员应该使用布尔变量来"记录"他们的代码吗?

我正在阅读McConell的Code Complete,他讨论了使用布尔变量来记录代码.例如,而不是:

if((elementIndex < 0) || (MAX_ELEMENTS < elementIndex) || 
   (elementIndex == lastElementIndex)){
       ...
}
Run Code Online (Sandbox Code Playgroud)

他建议:

finished = ((elementIndex < 0) || (MAX_ELEMENTS < elementIndex));
repeatedEntry = (elementIndex == lastElementIndex);
if(finished || repeatedEntry){
   ...
}
Run Code Online (Sandbox Code Playgroud)

这让我感到逻辑,良好的实践和非常自我记录.但是,我对于经常使用这种技术犹豫不决,因为我几乎从未遇到过这种技术; 也许只是因为稀有而令人困惑.然而,我的经验还不是很大,所以我有兴趣听听程序员对这种技术的看法,我很想知道是否有人经常使用这种技术或者在阅读代码时经常看到它.这是一个值得采用的约定/风格/技术吗?其他程序员会理解并欣赏它,还是认为它很奇怪?

boolean conventions self-documenting

78
推荐指数
4
解决办法
3509
查看次数

你能同时运行2个完全独立的Eclipse实例吗?

我目前正在使用Eclipse进行Java和Python(使用PyDev).我经常发现我有一个打开了大量文件的Java项目,然后由于某种原因我不得不切换到一个Python项目.

我想以我的方式离开我的Java项目,我不只是想在同一个地方打开大量的Python文件,因为那时我有太多的开放.

有没有什么方法可以让我的Java项目完全按照它的方式,并打开一个全新的Eclipse会话?(按照浏览器的方式排序)

java eclipse pydev

76
推荐指数
2
解决办法
6万
查看次数

为什么Java除以0.0时不会抛出异常?

我有代码来计算2个数字之间的百分比差异(oldNum - newNum) / oldNum * 100;- 其中两个数字都是doubles.我希望在oldNum为0的情况下添加某种检查/异常处理.但是,当我为oldNum和newNum进行了值为0.0的测试运行时,执行继续,好像什么都没发生并且没有抛出错误.使用ints 运行此代码肯定会导致算术除零异常.为什么Java在涉及到doubles 时会忽略它?

java double types integer divide-by-zero

68
推荐指数
4
解决办法
5万
查看次数

作为一名学习Python的Java程序员,我应该注意什么?

我的大部分编程背景都是用Java编写的,而且我仍然使用Java编写大部分编程.但是,我开始在工作中学习一些辅助项目的Python,我想学习它尽可能独立于我的Java背景 - 即我不想只用Python编写Java.我应该注意哪些事情?

一个简单的例子 - 当浏览Python教程时,我发现了一个函数(例如列表)的默认可变参数被持久化(从调用到调用时记住).这对我作为Java程序员来说是违反直觉的,很难让我理解.(如果您不理解该示例,请参见此处此处.)

有人还向我提供了这个列表,我觉得这个列表很有用,但很简短.任何人都有任何其他Java程序员可能会滥用Python的例子......?或者Java程序员会错误地假设或难以理解的东西?

编辑:好的,简要概述了我链接的文章所解决的原因,以防止答案中的重复(如比尔蜥蜴所建议的).(如果我在措辞方面犯了错误,请告诉我,我开始使用Python,所以我可能完全不了解所有概念.而且免责声明 - 这些将非常简短,所以如果你不明白它在检查链接时会得到什么.)

  • Java中的静态方法不能转换为Python类方法
  • Java中的switch语句转换为Python中的哈希表
  • 不要使用XML
  • 吸气剂和制定者是邪恶的(嘿,我只是引用:))
  • 代码重复通常是Java中必不可少的恶魔(例如方法重载),但在Python中则不然

(如果你觉得这个问题很有意思,那么请查看链接.:)非常好.)

python java

62
推荐指数
6
解决办法
1万
查看次数

多态如何在Python中工作?

我是Python的新手......并且来自大多数Java背景,如果它可以解释任何问题.

我正在尝试理解Python中的多态性.也许问题是我期待我已经知道的概念投射到Python中.但我把以下测试代码放在一起:

class animal(object):
    "empty animal class"

class dog(animal):
    "empty dog class"

myDog = dog()
print myDog.__class__ is animal
print myDog.__class__ is dog
Run Code Online (Sandbox Code Playgroud)

从我习惯的多态性(例如java的instanceof),我希望这两个语句都打印为true,因为dog的一个例子动物,也是一只狗.但我的输出是:

False
True
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python polymorphism

59
推荐指数
3
解决办法
5万
查看次数

重命名文件,现在SVN不允许我提交?

我正在使用Aptana开发ColdFusion网站.我们正在使用SVN进行版本控制.

我重命名了几个文件,现在我正在尝试提交其中一个,但是我收到以下错误:

'SVN Commit' has encountered a problem.
org.apache.subversion.javahl.ClientException: Illegal target for the requested operation
svn: Commit failed (details follow):
svn: Cannot commit 'R:\myPath\My-New-File-Name.cfm' because it was moved from 'R:\myPath\My-Old-File-Name.cfm' which is not part of the commit; both sides of the move must be committed together
Run Code Online (Sandbox Code Playgroud)

这似乎表明我需要同时提交先前的文件(已重命名)和新重命名的文件.如何提交不再存在的文件......?

svn commit

52
推荐指数
4
解决办法
5万
查看次数

在Python中,使用列表推导或for-each循环是否更好?

以下哪项更好用,为什么?

方法1:

for k, v in os.environ.items():
       print "%s=%s" % (k, v)
Run Code Online (Sandbox Code Playgroud)

方法2:

print "\n".join(["%s=%s" % (k, v) 
   for k,v in os.environ.items()])
Run Code Online (Sandbox Code Playgroud)

我倾向于引导第一个更容易理解,但这可能只是因为我是Python新手,列表理解对我来说仍然有些陌生.第二种方式是否更像Pythonic?我假设没有性能差异,但我可能错了.这两种技术的优点和缺点是什么?

(从Dive到Python的代码)

python foreach coding-style list-comprehension

36
推荐指数
4
解决办法
1万
查看次数