我基本上試圖修改this存儲過程。WHERE子句導致表省略LEFT JOIN規則
修改存儲過程:
CREATE PROCEDURE sp1(d1 date, d2 date, client INT(10))
declare d datetime;
create TEMPORARY TABLE foo (d date NOT NULL, Amount INT(10) DEFAULT 0);
set d = d1;
while d <= d2 do
insert into foo (d) values (d);
set d = date_add(d, interval 1 day);
end while;
SELECT SUM(p.Amount), foo.d
FROM foo LEFT JOIN ItemTracker_dbo.Payment ON foo.d = p.Datetime
WHERE p.ClientId = ClientId
GROUP BY
foo.d;
DROP TEMPORARY TABLE foo;
end PROCEDURE
注: WHERE子句... p.ClientId =客戶
我是令人頭大我的大腦試圖找出它爲什麼被省略零。
經拆除後WHERE p.ClientId = client
程序開始返回NULL ...
爲什麼WHERE子句ommiting空行?我可能誤解了什麼究竟是 a LEFT JOIN
是。
我怎麼能過濾SUM(p.Amount)
結果只返回總和WHERE clientId = client
?
這是可以的,但會更改查詢的語義。 – Romain 2010-02-02 16:11:33
@Romain Muller:我認爲'p'是'Payment'的別名。它在哪裏改變了語義? – 2010-02-02 16:13:58
對我來說工作得很好。接受,因爲你在哪裏第一個15秒 – 2010-02-02 16:14:57