我有以下数据
CREATE TABLE list (
entries TEXT[],
category_id TEXT,
group_id TEXT
);
CREATE TABLE cat (
category_id TEXT,
name TEXT
);
INSERT INTO list (entries, category_id, group_id) VALUES
('{{1,2,3},{4,5,6},{7,8,9}}', 'c1', 'g1'),
('{{1,2,3},{4,5,6},{7,8,9}}', 'c2', 'g1'),
('{{1,2,3},{4,5,6},{7,8,9}}', 'c3', 'g2'),
('{{1,2,3},{4,5,6},{7,8,9}}', 'c4', 'g2');
INSERT INTO cat (category_id, name) VALUES
('c1', 'Cat1'),
('c2', 'Cat2'),
('c3', 'Cat3'),
('c4', 'Cat4');
我想输出
entries cat_id group_id
('{{1,2,3},{4,5,6},{7,8,9}}', 'c1', 'g1'),
('{{1,2,3},{4,5,6},{7,8,9}}', 'c2', 'g1'),
('[]', 'c3', 'g1'),
('[]', 'c4', 'g1'),
('[]', 'c1', 'g2'),
('[]', 'c2', 'g2'),
('{{1,2,3},{4,5,6},{7,8,9}}', 'c3', 'g2'),
('{{1,2,3},{4,5,6},{7,8,9}}', 'c4', 'g2');
答案 0 :(得分:0)
您可以使用CROSS JOIN
生成类别和组的笛卡尔积,然后将它们与条目合并。
chart.getDescription().setEnabled(false);
chart.setDrawGridBackground(false);
chart.setHighlightFullBarEnabled(false);
chart.getXAxis().setDrawGridLines(false);
chart.getAxisLeft().setDrawGridLines(false);
chart.getAxisRight().setDrawGridLines(false);
chart.getAxisRight().setDrawLimitLinesBehindData(false);
chart.getAxisLeft().setDrawLabels(false);
chart.getAxisRight().setDrawLabels(false);
chart.getXAxis().setDrawLabels(false);
chart.getXAxis().setDrawLimitLinesBehindData(false);
chart.getLegend().setEnabled(false);
注意:可以通过SELECT
COALESCE(entries, '{}') AS entries,
attrs.category_id,
attrs.group_id
FROM
(SELECT * FROM
(SELECT category_id FROM cat) cc
CROSS JOIN
(SELECT DISTINCT group_id from list) gg
) attrs
LEFT JOIN list lst ON
attrs.category_id=lst.category_id
AND attrs.group_id=lst.group_id
ORDER BY attrs.group_id, attrs.category_id;
表选择组,但最好对其进行一些规范化并移至单独的表(特别是如果有更多与组相关的数据)
答案 1 :(得分:0)
使用CTE生成cross
的{{1}}:
(group_id, category_id)