我在過濾SQL時遇到問題。請看看數據庫的架構。現在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)
- 克里斯托弗,芝加哥(因爲PHP> 1)
但是克里斯托弗不知道Java,但他被退回。替換OR
與AND
之間的主要條件,因爲沒有返回。
此外,我想獲得一行程序員的所有技能;這裏約書亞在兩個不同的行。如何解決它?
所有事情都考慮過了,最後的問題。如何獲得:
- 程序員技能PHP●●/●●●,●●●JS和HTML●/●●/●●●
- 程序員技能PHP●●/●●●和PHP經驗2年以上和JS●●●與經驗4年以上
- 程序員技能PHP●/●●/●●●和JS●●●在兩個至少3年以上經驗/任何
希望這是可能的。提前致謝。
編輯 業務集中在日期都沒有問題,也沒有必要計算日期之間的差值,SQL可以只包含一年,即2010年一般的日期是不是重點。
@Matt,我知道什麼是'OR',我猜數據庫模式可能是錯誤的 – 2014-12-02 16:14:19
Christopher可能不知道Java,但他確實知道Python,他會知道'OR'的意思是OR – Matt 2014-12-02 16:14:31
好吧,評論一定已經被削減;) – 2014-12-02 16:20:35