PostgreSQL - 创建视图时需要帮助

时间:2014-01-04 06:48:43

标签: mysql sql postgresql select view

我在这里创建一个视图。

这是一个例子。

表1:

time,date,label,count
12:00 AM,1-Jan,A,10
12:30 AM,1-Jan,A,10
1:00 AM,1-Jan,A,19
1:30 AM,1-Jan,B,14
2:00 AM,1-Jan,B,18
2:30 AM,1-Jan,B,13
3:00 AM,1-Jan,C,20
3:30 AM,1-Jan,C,16
4:00 AM,1-Jan,C,12
4:30 AM,1-Jan,D,10
5:00 AM,1-Jan,D,16
5:30 AM,1-Jan,D,18

表2:

label,category
A,Apple
B,Ball
C,Cat
E,Elephant

查看:

time,date,label,category,count
12:00 AM,1-Jan,A,Apple,10
12:30 AM,1-Jan,A,Apple,10
1:00 AM,1-Jan,A,Apple,19
1:30 AM,1-Jan,B,Ball,14
2:00 AM,1-Jan,B,Ball,18
2:30 AM,1-Jan,B,Ball,13
3:00 AM,1-Jan,C,Cat,20
3:30 AM,1-Jan,C,Cat,16
4:00 AM,1-Jan,C,Cat,12
4:30 AM,1-Jan,D,   ,10
5:00 AM,1-Jan,D,   ,16
5:30 AM,1-Jan,D,   ,18

查看脚本:

CREATE OR REPLACE VIEW queue_interval_wise AS 
SELECT
    t1.Time,
    t1.Date,
    t1.Label,
    t2.Category,
    t1.Count
FROM Table1 t1, Table2 t2
WHERE t1.Label = t2.Table2

当我运行该脚本时,我得到的行数多于Table1中的行数。

无论我使用WHERE子句还是LEFT JOIN,结果都与Table1的行数不匹配。

有人让我知道我在做错的地方。

1 个答案:

答案 0 :(得分:0)

试试这个:

CREATE OR REPLACE VIEW queue_interval_wise AS 
SELECT DISTINCT 
    t1.Time,
    t1.Date,
    t1.Label,
    IFNULL(t2.Category, ''),
    t1.Count
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.Label = t2.Label