| Bug #54056 | Incorrect number format in output from SELECT | ||
|---|---|---|---|
| Submitted: | 28 May 2010 6:43 | Modified: | 28 May 2010 8:34 |
| Reporter: | Kristian Nielsen | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S3 (Non-critical) |
| Version: | 5.1.47, 5.1.48, 5.6.99 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
[28 May 2010 6:43]
Kristian Nielsen
[28 May 2010 8:34]
Sveta Smirnova
Thank you for the report.
Verified as described.
Problem causes ALTER TABLE t2 ADD PRIMARY KEY(t1_id); statement
Reduced test:
CREATE TABLE t1 (
t1_id INT UNSIGNED,
PRIMARY KEY(t1_id)
) Engine=MyISAM;
INSERT INTO t1 (t1_id) VALUES (1), (2), (3), (4), (5);
CREATE TABLE t2 SELECT * FROM t1;
CREATE TABLE t3 (
t3_id INT UNSIGNED AUTO_INCREMENT,
t1_id INT UNSIGNED,
amount DECIMAL(16,2),
PRIMARY KEY(t3_id),
KEY(t1_id)
) Engine=MyISAM;
INSERT INTO t3 (t1_id, t3_id, amount)
VALUES (1, 1, 100.00), (2, 2, 200.00), (4, 4, 400.00);
SELECT
t1.t1_id,
IFNULL((SELECT SUM(amount) FROM t3 WHERE t3.t1_id=t1.t1_id), 0) AS total_amount
FROM
t1
LEFT JOIN t2 ON t2.t1_id=t1.t1_id
GROUP BY
t1.t1_id
;
ALTER TABLE t2 ADD PRIMARY KEY(t1_id);
SELECT
t1.t1_id,
IFNULL((SELECT SUM(amount) FROM t3 WHERE t3.t1_id=t1.t1_id), 0) AS total_amount
FROM
t1
LEFT JOIN t2 ON t2.t1_id=t1.t1_id
GROUP BY
t1.t1_id
;
