我在PostgreSQL中有兩個表。我認爲這可能是由於我的PK/FK的問題,或者我缺乏的是如何正確地查詢理解:sql - 加入重複值問題
CREATE TABLE Minute
(
Name varchar(20),
Day date,
Minute time,
Weight real
Speed real
PRIMARY KEY (Name, Day, Minute)
)
--NOTE: This table has everyday, for every minute in a month.
CREATE TABLE DataMan
(
Name varchar(20),
Day date, --NOTE: This is by day 10/31/2013, 11/31/2013
Size real,
Volume real,
NumEv real,
PRIMARY KEY (Name, Day)
)
數據的種類的,我在的DataMan會是這樣:
GOOG | 10/31/2013 | 123 | 456 | 5
GOOG | 11/31/2013 | 234 | 412 | 5
以及一些其他的名稱和數據與幾個月。
數據的種類的,我在一分鐘會是這樣:
GOOG | 10/31/2013 | 12:00:00 | 251.312 | 1231.12
GOOG | 10/31/2013 | 12:01:00 | 124.51 | 1239
所以,我想創建一個表,其中有:
Minute.Name | Minute.Date | Minute.Time | DataMan.Size
GOOG | 10/31/2013 | 12:00:00 | 123
GOOG | 10/31/2013 | 12:01:00 | 123
這是我的查詢
SELECT minute.name, minute.date, minute.time, dataman.size
FROM minute LEFT JOIN dataman ON (minute.name = dataman.name)
ORDER BY minute.name ASC, minute.date ASC, minute.time ASC
會發生什麼是表輸出確實是這樣的:
GOOG | 10/31/2013 | 12:00:00 | 123
GOOG | 10/31/2013 | 12:00:00 | 234
我希望Dataman.size通過分鐘增量保持不變,但它似乎做一個笛卡爾積,並將Dataman.size的每個值放在分鐘時間框架上,這是沒有意義的。
對於我而言,這個問題將是,JOIN將只匹配某些日子,因爲minute.Day(每天)的天更高粒度那麼的DataMan(1一個月)。我會想要它,這樣postgres會留下最後一個已知的值。因此,整個月都會重新設置值,直到數據管理員發生變化。 – TTT