您必须使用 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