2016-10-06 5 views
-2
SELECT COUNT(*) as not_returned_devices, contact_email FROM device_rent WHERE rent_end IS NULL GROUP BY contact_email; 

SELECT COUNT(*) as returned_devices, contact_email FROM device_rent WHERE rent_end IS NOT NULL GROUP BY contact_email; 

私が必要とするのは、contact_name、返されたデバイスの数と返されないデバイスの数の3つのカラムを持つテーブルを作ることです。基本的に、私は必要なのは、それらの2つのテーブルを1つのテーブルにマージすることですが、私は固執しています。これはブール式がfalseのための真のための「1」と「0」として扱われるMySQLのショートカットを、使用していることMySQLは2つの異なる選択でテーブルを作成する

SELECT contact_email, SUM(rent_end IS NULL) as not_returned_devices, 
     SUM(rent_end IS NOT NULL) as returned_devices 
FROM device_rent 
GROUP BY contact_email; 

注:

答えて

0

ただ、条件付き集約を使用しています。これは便利な方法で、case文を書くことから救います。それは次のようになります:

SELECT contact_email, 
     SUM(CASE WHEN rent_end IS NULL THEN 1 ELSE 0 
      END) as not_returned_devices, 
     COUNT(rent_end) as returned_devices 
FROM device_rent 
GROUP BY contact_email; 
関連する問題