-1
私はこの3つのテーブルをMySqlデータベースに持っています。MySqlクエリで3つのテーブルを結合する
users
+----+------+--------+------+
| Id | Name | Status | Role |
+----+------+--------+------+
| 1 | A | Aktiv | Op |
| 2 | B | Aktiv | Op |
| 3 | C | Aktiv | Op |
| 4 | D | Aktiv | Op |
+----+------+--------+------+
cnt
+----+------+------------+------+
| Id | Name | Date | Type |
+----+------+------------+------+
| 1 | A | 2017-11-09 | Web |
| 2 | B | 2017-11-09 | Web |
| 3 | C | 2017-11-09 | Web |
| 4 | C | 2017-11-09 | Inb |
| 5 | A | 2017-11-09 | Web |
+----+------+------------+------+
Lead
+----+------+------------------+------------+
| Id | Name | Date | Type |
+----+------+------------------+------------+
| 1 | A | 2017-11-09 00:24 | Imported |
| 2 | B | 2017-11-09 09:32 | Activation |
| 3 | B | 2017-11-09 10:56 | Activation |
| 4 | D | 2017-11-09 12:21 | Activation |
| 5 | D | 2017-11-10 12:22 | Activation |
+----+------+------------------+------------+
私はメインテーブルにそれらを結合しようとしているが、成功しません、私が使用しているクエリは次のとおりです。
SELECT IFNULL(u.Name,'Total') as "Name",
Sum(IF(c.Type = 'Web',1,0)) as "Cnt Web",
Sum(IF(l.Type = 'Activation',1,0)) as "Lead Web"
FROM users u
LEFT JOIN cnt c ON u.Name = c.Name and c.Date = '2017-11-09'
LEFT JOIN lead l ON u.Name = l.Name and l.Date>= '2017-11-09' AND l.Date< '2017-11-10'
WHERE u.Status = 'Aktiv' AND u.Role = 'Op'
GROUP BY u.Name WITH ROLLUP
私は必要な結果は、このようなテーブルです:
+----+------+--------+---------+
| Id | Name | Cnt Web| Lead Web|
+----+------+------------------+
| 1 | A | 2 | 0 |
| 2 | B | 1 | 2 |
| 3 | C | 1 | 0 |
| 4 | D | 0 | 1 |
+----+------+------------------+
最初のテーブルを2番目のテーブルに結合しようとすると、最初のテーブルに3番目のテーブルを結合しようとすると、正しい結果が得られますが、それらをすべて結合すると必要な結果が得られません。
すべての回答が最も歓迎されます。前もって感謝します。
サブ照会可能な複製を使用して溶液[2つの左の群\ _CONCATから奇妙な重複現象がGROUP \ _BYsのJOINを(https://stackoverflow.com/questions/45250646です/奇妙な - 重複 - ビヘイビア - グループ - 連結の2つの左結合グループの) – philipxy
IDの4のために1つの値があるのはなぜですか? Dのリードテーブルに2つのレコード? – SEarle1986
@ SEarle1986 1つは2017-11-09にあり、もう1つは2017-11-10にあり、上記のslqコードで説明した通り、2017-11-09のものだけが必要です。 – Eriontp