2016-11-27 6 views
0

次の表があります。MySQLユニオン出力エラー

1) Table, Named "issues_tot" 
+---------+------+------------+ 
| v_code | oid | amount | 
+---------+------+------------+ 
|  1 | 2 | 200,000.00 | 
|  1 | 3 | 80,000.00 | 
|  2 | 1 | 40,000.00 | 
|  3 | 2 | 150,000.00 | 
+---------+------+------------+ 

2) Table, Named "cp_tot" 
+--------+-----+-----------+ 
| v_code | oid | amount | 
+--------+-----+-----------+ 
|  1 | 2 | 68,000.00 | 
|  1 | 3 | 50,000.00 | 
|  3 | 2 | 75,000.00 | 
+--------+-----+-----------+ 

3) Table, Named "vote" 
+--------+-------------------------+ 
| v_code |   vote   | 
+--------+-------------------------+ 
|  1 | 001-2-6-3-2502   | 
|  2 | 001-1-4-21-2202   | 
|  3 | 101-1-2-0-1405   | 
+--------+-------------------------+ 

4) Table, Named "office" 

+-----+----------------------+ 
| oid |  office  | 
+-----+----------------------+ 
| 1 | Weeraketiya   | 
| 2 | Tissamaharama  | 
| 3 | District Sec | 
+-----+----------------------+ 

所望の出力を次のように

+--------+------------+-----------+------------+ 
| v_code | Gross | Cut | Net  | 
+--------+------------+-----------+------------+ 
|  1 | 200,000.00 | 68,000.00 | 132,000.00 | 
|  1 | 80,000.00 | 50,000.00 | 30,000.00 | 
|  2 | 40,000.00 | 0.00  | 40,000.00 | 
|  3 | 150,000.00 | 75,000.00 | 75,000.00 | 
+--------+------------+-----------+------------+ 

02)私は出力

select `vote`.`vote` AS `vote`,`office`.`office` AS `office`, 
    `issues_tot`.`amount` AS `Gross`, 
    coalesce(`cp_tot`.`amount`,0) AS `Cut`, 
    (`issues_tot`.`amount` - coalesce(`cp_tot`.`amount`,0)) AS `Net` 
    from (((`vote` join `issues_tot` on((`vote`.`v_code` = `issues_tot`.`v_code`))) join 
`office` on((`office`.`oid` = `issues_tot`.`oid`))) left join 
`cp_tot` on((`issues_tot`.`v_code` = `cp_tot`.`v_code`))) 

を生成するために、次のスクリプトを使用ししかし、それは次のような出力を生成:

+------------+----------------+--------------+-------------+--------------+ 
| Vote   | Office | Gross  |  Cut  |  Net  | 
+---------------+-------------+--------------+-------------+--------------+ 
| 001-2-6-3-2502| Tissamaharama | 200,000.00 | 68,000.00 |132,000.00 | 
| 001-2-6-3-2502| Tissamaharama | 200,000.00 | 50,000.00 | 150,000.00 | 
| 001-2-6-3-2502| District Sec | 80,000.00 | 68,000.00 | 12,000.00 | 
| 001-2-6-3-2502| District Sec | 80,000.00 | 50,000.00 | 30,000.00 | 
| 001-1-4-21-2202| Weeraketiya | 40,000.00 | -   | 40,000.00 | 
| 101-1-2-0-1405 | Tissamaharama | 150,000.00 | 75,000.00 | 75,000.00 | 
+------------+-----------------+--------------+-------------+--------------+ 

私はできません間違っていたことを忘れないでください。誰でも助けてくれますか?

+0

でそれを参照してくださいあなたが得るためにv_codeoidissues_totcp_totに参加し、簡単な計算を行うためにのみ必要とする出力を取得するには(いくつかの行にブレーキをかける、インデントするなど)。 – FDavidov

答えて

0

Net

select v_code, 
     oid, 
     issues_tot.amount as Gross, 
     ifnull(cp_tot.amount,0) as Cut, 
     issues_tot.amount - ifnull(cp_tot.amount,0) as Net 
    from issues_tot 
    left join cp_tot using (v_code, oid); 

が読めるものにクエリをフォーマットしてくださいsqlfiddle

+0

@ Andreas Wedebrandしかし、issues_totテーブルにはcp_totテーブルよりも多くの行が含まれています。したがって、上記のスクリプトは私の問題を解決しませんでした。 – Xtern

+0

例:-issues_totテーブルには10行が含まれていますが、cp_totには4行が含まれています。しかし、出力は、ネットに他の6行と10行のうちの0行を含む10行、4行を表示する必要があります。 – Xtern

+0

テーブルcp_totを編集する必要があります – Xtern