【发布时间】:2014-12-02 16:03:22
【问题描述】:
我的 SQL 过滤有问题。请看一下数据库的架构。
现在,我想让程序员了解 PHP 并掌握技能●●/●●● 和掌握 Java 技能●●●。我执行了以下查询:
SELECT p.name, p.city FROM programmers p INNER JOIN skills s
ON p.id = s.programmer
WHERE ( s.lang = 'PHP' AND s.level > 1 ) OR ( s.lang = 'Java' AND s.level = 3 );
我得到的是
- 约书亚,亚特兰大(因为 Java = 3)
- 约书亚,亚特兰大(因为 PHP > 1)
- Christopher,芝加哥(因为 PHP > 1)
但是 Christopher 不知道 Java,但他又回来了。在主要条件之间将 OR 替换为 AND 不会返回任何内容。
另外,我想一口气把程序员的所有技能都搞定;这里约书亚在两个单独的行中。如何解决?
所有事情都考虑过了,最后一个问题。获取方式:
- 具有 PHP ●●/●●●、JS ●●● 和 HTML ●/●●/●●● 技能的程序员
- 具有 PHP●●/●●● 和 PHP 经验 2 年以上和 JS●●● 4 年以上经验的程序员
- 具有 PHP ●/●●/●●● 和 JS ●●● 技能的程序员,在这两种/任何一种方面至少有 3 年以上的经验
希望这是可能的。提前致谢。
编辑 以日期为中心的操作没有问题,不需要计算日期之间的差异,SQL可以只包含年份,即2010年。一般日期不是重点。
【问题讨论】:
-
@Matt ,我知道
OR是什么,我猜数据库架构可能是错误的 -
Christopher 可能不知道 Java,但他知道 Python,他会知道
OR的意思是 OR -
好吧,你之前的评论肯定被删了;)
-
我不小心把它修复了,而不是编辑哈哈 :)
标签: mysql sql database database-schema