2017-11-28 15 views
0

私は、今後12ヶ月以内にリースからの総収入を計算するために以下のSQLクエリを作成しました。MYSQL: '合計'行を追加する連合演算子

SELECT DISTINCT apartment.addressLine1, lease.monthlyRent, lease.duration, lease.roomNumber, lease.monthlyRent*lease.duration AS totalLeaseRent 
    FROM `lease` 
    INNER JOIN apartment on (lease.roomNumber) = (apartment.roomNumber) 
    left Join tenantLease on tenantLease.leaseID = lease.leaseID 
    WHERE tenantLease.live = 1 AND lease.duration <= 12 

これは、次の結果を返します。

AddressLine1 monthlyRent Duration(months) roomNumber totalLeaseRent 
Chlorine Gardens1200  9     GF02   10800 
May Road  800   12    GF03   9600 
Beech Hill  900   8     BG06   7200 
Ash Avenue  1000  12    AA04   12000 

は、私が今totalLeaseRentの合計を含むように別の行を持つことができるようにしたいです。このように:

AddressLine1 monthlyRent Duration(months) roomNumber totalLeaseRent 
    Chlorine Garden1200  9     GF02   10800 
    May Road  800   12   GF03   9600 
    Beech Hill  900   8    BG06   7200 
    Ash Avenue  1000  12   AA04   12000 
    TOTAL             *total* 

私は、次のコードを試してみましたが、エラーコード取得維持している: 1222 - 使用するSELECTステートメントは、私はこのクエリを取得するにはどうすればよいの列

SELECT DISTINCT apartment.addressLine1, lease.monthlyRent, lease.duration, lease.roomNumber, lease.monthlyRent*lease.duration AS totalLeaseRent 
FROM `lease` 
INNER JOIN apartment on (lease.roomNumber) = (apartment.roomNumber) 
left Join tenantLease on tenantLease.leaseID = lease.leaseID 
WHERE tenantLease.live = 1 AND lease.duration <= 12 

UNION ALL 
SELECT 'Total', SUM(lease.monthlyRent * lease.duration) 
FROM lease 

の数が異なります走る? おかげ

答えて

0

TRY THIS:UNION内の各SELECTステートメントは同じ数の列を持っている必要があります

の1-セット操作で作業しながら、私たちは以下の3点従わなければなら

2 - 列必要がありますまた、各SELECT文で

3 - 列も同じ順序である必要があります同様のデータ型を持つ

SELECT DISTINCT apartment.addressLine1, 
    lease.monthlyRent, 
    lease.duration, 
    lease.roomNumber, 
    lease.monthlyRent*lease.duration AS totalLeaseRent 
FROM `lease` 
INNER JOIN apartment on (lease.roomNumber) = (apartment.roomNumber) 
left Join tenantLease on tenantLease.leaseID = lease.leaseID 
WHERE tenantLease.live = 1 AND lease.duration <= 12 
UNION ALL 
SELECT 'Total', NULL, NULL, NULL, SUM(lease.monthlyRent * lease.duration) 
FROM lease 
+0

これは機能します!本当にありがとう、私はこれを解決しようと多くの時間を費やしました! –

関連する問題