你必須使用GROUP BY總結收視率。我忽略了表中的成本列。還有,user_id列。似乎只有date_id在這兩個表之間是相關的。下面的查詢是在SQL Server 2012中編寫和測試的,但我認爲SELECT語句應該仍然適用於MySQL,只需稍作更改。
腳本:
CREATE TABLE dbo.[date]
(
[date_id] INT NOT NULL IDENTITY
, [title] VARCHAR(100) NOT NULL
, [description] VARCHAR(100) NOT NULL
);
CREATE TABLE dbo.[date_rating]
(
[date_id] INT NOT NULL
, [user_id] INT NOT NULL
, [rating] INT NOT NULL
);
INSERT INTO dbo.[date] ([title], [description]) VALUES
('title 1', 'description 1'),
('title 2', 'description 2'),
('title 3', 'description 3');
INSERT INTO dbo.[date_rating] ([date_id], [user_id], [rating]) VALUES
(1, 100, 1),
(1, 200, -1),
(2, 200, -1),
(1, 200, 1),
(3, 200, 1),
(1, 200, -1);
SELECT d.[date_id]
, d.[title]
, d.[description]
, SUM([rating]) AS ratings
FROM dbo.[date] d
INNER JOIN dbo.[date_rating] dr
ON d.date_id = dr.date_id
GROUP BY d.[date_id]
, d.[title]
, d.[description];
輸出:
date_id title description ratings
------- ------- ------------- -------
1 title 1 description 1 0
2 title 2 description 2 -1
3 title 3 description 3 1
對不起,這是MYSQL。 – penner 2012-04-28 20:01:05