-1
我在MySql數據庫中有這3個表。在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 |
+----+------+------------------+
當我嘗試加入與第二個第一個表或第一個與第三個,我得到正確的結果,但我不能得到所需的結果,當我加入他們所有。
任何答案是最受歡迎的。先謝謝你。
的可能的複製(https://stackoverflow.com/questions/45250646 [從兩個LEFT的GROUP \ _CONCAT奇怪行爲重複GROUP \ _BYs的JOIN的]/odd-duplicate-behavior-from-group-concat-of-two-left-join-of-group-bys) – philipxy
爲什麼Lead web對於ID 4的值爲1,不應該是2,因爲有D的主表中有2條記錄? – SEarle1986
@ SEarle1986因爲一個在2017-11-09,另一個在2017-11-10,我只需要那些在2017-11-09,正如我在上面的slq代碼中所解釋的那樣。 – Eriontp