Я хотел бы отображать данные, перегруппированные год за годом, и одним из возможных решений является использование представлений и выбор из них.Матрица данных выглядит примерно так (конечно, это вымышленный набор демонстрационных данных):
USA 2005 22 156
CAN 2005 14 101
MEX 2005 5 32
USA 2006 24 160
CAN 2006 16 103
USA 2007 26 163
MEX 2007 8 35
Код SQL для создания и заполнения таблицы:
DROP TABLE IF EXISTS `tab1`;<br>
CREATE TABLE `tab1` ( <br>
`id1` int(4) unsigned NOT NULL AUTO_INCREMENT,
`iso3` char(3) NOT NULL,
`year` int(4) unsigned NOT NULL,
`aaa` int(10) DEFAULT NULL,
`bbb` int(10) DEFAULT NULL,
PRIMARY KEY (`id1`)
)
INSERT INTO `tab1` VALUES
('1', 'USA', '2005', '22', '156'),
('2', 'CAN', '2005', '14', '101'),
('3', 'MEX', '2005', '5', '32'),
('4', 'USA', '2006', '24', '160'),
('5', 'CAN', '2006', '16', '103'),
('6', 'USA', '2007', '26', '163'),
('7', 'MEX', '2007', '8', '35');
COMMIT;
А теперь я хотел быполучить для параметра 'aaa' двухмерную таблицу, подобную этой:
country 2005 2006 2007
USA 22 24 26
CAN 14 16
MEX 5 8
Однако в следующем коде SQL пропущены все строки с пропущенными данными, будь то одно единственное значение, а я получаю только одну строку
USA 22 24 26
Код SQL:
SELECT view2005.Country, view2005.2005, view2006.2006, view2007.2007
FROM view2005, view2006, view2007
WHERE view2005.country = view2006.country
AND view2005.country = view2007.country
Есть идеи, как это сделать, включая строки с пропущенными данными?Заранее спасибо.