0

我一直在努力解决这个问题,并决定我不会很快解决这个问题!我在这里先向您的帮助表示感谢。喜欢这个地方。

我有 2 张桌子

日期:

date_id, user_id, cost, title, description

日期评级:

date_id, user_id, rating

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

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

4

3 回答 3

5

你不能用这样的东西吗?我不是 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

于 2012-04-28T20:04:46.220 回答
1

您可以使用GROUP BY

SELECT date.*, SUM(date_rating.rating) AS Rating
FROM date JOIN date_rating USING (date_id)
GROUP BY date_id;
于 2012-04-28T20:06:43.020 回答
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
于 2012-04-28T20:11:08.693 回答