2012-04-28 76 views
0

我一直在试图弄清楚这一点,并决定我不会很快弄清楚它!我在这里先向您的帮助表示感谢。喜欢这个地方。总结一张表,其中列匹配另一张表并加入结果

我有2个表

日期:

date_id, user_id, cost, title, description 

date_rating:

date_id, user_id, rating 

我具有相同date_id但不同user_id的多个条目。换句话说,同一日期的多个评级。评分是1或-1。我想添加所有的评级一起date_id,然后加入到我的DATE表,其中date_id匹配。所以我在表DATE上有一个名为rating的专栏。这样我可以按评分排序。听起来很简单,但事实证明这并不容易。我猜DBA不是我的东西!

编辑:MySQL客户端版本:5.0.8 mysqlnd-dev的 - 20102224 - $修订:310735 $

+0

对不起,这是MYSQL。 – penner 2012-04-28 20:01:05

回答

3

你就不能使用这样的事情?我在MySQL的不是专家,你要知道(我更多的是SQL Server的家伙):

SELECT 
    date_id, user_id, cost, title, description, 
    (SELECT SUM(rating) FROM date_rating dr WHERE dr.date_id = d.date_id) AS 'Rating' 
FROM 
    date d 

就相关子查询来获得收视率的总和由它的date_id指定的每一个日期?

+0

这个作品谢谢你!我的思想一直在吹。 – penner 2012-04-28 20:07:49

1

您可以使用GROUP BY

SELECT date.*, SUM(date_rating.rating) AS Rating 
FROM date JOIN date_rating USING (date_id) 
GROUP BY date_id; 
0

你必须使用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 
相关问题