2014-01-04 3 views
1

Я создаю представление здесь.PostgreSQL - требуется помощь при создании представления

Вот пример.

Table1:

 
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 

Table2:

 
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 

Просмотр SCRIPT:

 
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.

Кто-то дал мне знать, где я делаю ошибку.

+0

Что вы * * ожидать дальше? Выбранный вами вывод вывода * имеет * то же количество строк (12), что и таблица1, поэтому он был явно создан с запросом с использованием 'LEFT OUTER JOIN', а не внутреннего запроса на соединение, который вы разместили выше. Я не понимаю, что вы думаете о проблеме, или чего вы пытаетесь достичь. –

ответ

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 
+0

Он по-прежнему соответствует количеству строк на 'Table1' –

+0

@ user2549787 Проверить обновленный ответ –

+0

Даже« DISTINCT »не помог мне. –

Смежные вопросы