2017-07-04 23 views
0

まずテーブル従業員クエリが参加して、SQLのwhere句

id empName  empEmail   empSal active 
==================================================== 
13 sadf  [email protected]  233  1 
12 checkout [email protected] 3   1 
11 safg  [email protected]  123  1 
10 sdf   [email protected]   4   1 
9 sdaf  [email protected]  3   1 
8 asdf  [email protected]  8   1 
7 asdf  [email protected]  8   1 
6 asdf  [email protected]  8   1 

第二表emp_status

id emp_id EmpSalary active 
============================= 
5 4  156  1 
4 2  156  1 
3 2  555  1 
2 1  200  0 
1 1  1500  1 



SELECT o.* 
FROM employees as o 
LEFT JOIN emp_status as emp ON emp.emp_id = o.id 
WHERE (emp.active IS NULL OR (emp.active != 0)) 
GROUP BY o.id 
ORDER BY o.id DESC 

emp_statusは2行1持つステータス1とされている場合、私たちが望むもの、それはステータス0数えるべきではありません有する他0にすると実行に役立つはずです。どのようにそれが可能なことができますか?

+0

あなたに活性カラムのデータ型= ENUMそして、設定された値を示唆している場所に、テーブルの結合条件を渡さないでくださいそれを取得しないでください?ステータスが0の従業員をスキップしますか? –

+0

予期した結果を投稿してください。 – maSTAShuFu

+0

カウントをしたい場合は 'SELECT count(o.id)AS cnt'を追加してください –

答えて

2

は、あなたがより多くの私を詳しく説明することができます句と私は0,1,2,3,4,5,6

SELECT o.* FROM employees as o 
LEFT JOIN emp_status as emp ON emp.emp_id = o.id and emp.active IN (1,2,3,5,6) GROUP BY o.id ORDER BY o.id DESC 
+0

2番目のテーブルを見てくださいemp_status emp_idはアクティブな値0です。表示してはいけませんが、まだ表示してはいけません –

+0

emp.active = NULLを取得しますか? –

+0

が機能しない –