0

我正在尝试基于 5 个表中的字段构建评论记录:

在此处输入图像描述

我已经标记了我需要的所有列,但目前我只是检索所有 user_rating 表。

这是我到目前为止所拥有的:

SELECT DISTINCT user_rating.*, whiskey.name, user_notes.overall, users.image, user_rate.rate_number
    FROM user_rating
    LEFT JOIN whiskey ON whiskey.id = user_rating.whiskeyid
    LEFT JOIN users ON users.username = user_rating.username
    LEFT JOIN user_notes ON user_notes.username = user_rating.username AND user_rating.whiskeyid = user_notes.whiskey_id
    LEFT JOIN user_rate ON user_rate.whiskey_id = user_rating.whiskeyid AND user_rate.username = user_rating.username
    ORDER BY user_rating.id DESC

起初我认为这给了我想要的结果,但后来我注意到我得到了多行以及太多的空字段。任何帮助将不胜感激。

编辑:

多行是指重复的行。另外,我知道左连接会在连接的右侧产生空值。我的意思是我得到的空值比我应该得到的更多,因为数据在数据库中。

为了澄清,我正在尝试创建一个最近列出的最近评论列表。每条评论由一个用户名、11 个类别(每个都是整数值)、总体评分(int 值)、注释(字符串)、图像(URL)和威士忌名称(字符串)组成。

4

2 回答 2

0

1)你不能得到多个相同的行,因为你使用 DISTINCT。(多个是指重复吗?)

2)您得到空字段,因为您使用的是 LEFT JOIN 并且您的表无法连接(某些“ON 子句”无法评估为真)

于 2013-09-16T02:00:10.093 回答
0

事实证明,我的查询没有任何问题。我正在使用其数据库的人没有维护它,因此对同一产品和用户有多个评论,只有总体评分不同。此外,还有许多关于甚至不存在的产品的评论。我应该从一开始就更仔细地查看数据库,因为删除所有错误的行解决了我的问题。感谢所有的投入。

于 2013-09-16T19:31:42.730 回答