1

我在 sql 中有两个表:

client
id   first
1    david
2    jenna
3    ben

rating
id  clientid userid rating ratetext         date
1   1        3      4      Very good        12/4/2012
2   3        6      3      Simple bla bla   5/3/2013

我想获得所有的评分,userid 所以我尝试了类似的方法:

SELECT rating,ratetext,date,first FROM rating r 
INNER JOIN client c ON r.userid = 3;

但我总是得到我不需要的其他行的行。知道我的命令有什么问题吗?

4

4 回答 4

3

大概您想选择具有明确指定 ID 的评级,以及相应的客户端,因为clientid存储在rating记录中:

SELECT rating,ratetext,date,first FROM rating r 
INNER JOIN client c ON c.id = r.clientid
WHERE r.userid = 3;
于 2013-04-05T19:24:30.060 回答
3
SELECT rating, ratetext, date, first 
FROM   rating r INNER JOIN client c 
ON     r.clientid = c.id
WHERE  r.userid = 3;
于 2013-04-05T19:25:06.117 回答
1

您的连接应该描述连接两个表的两条信息。你想要一些类似的东西:

SELECT * FROM rating r, client c WHERE r.clientid=c.id AND r.userid=3
于 2013-04-05T19:25:09.490 回答
1

我相信这就是您正在寻找的:

SELECT r.rating, r.ratetext, r.date, c.first
FROM rating AS r
INNER JOIN client AS c
  ON r.clientid = c.id
WHERE r.userid = 3

您应该加入两个表的客户端 id 列,然后在 where 子句中使用 userid 进行过滤。

确保您在 r.clientid 和 r.userid 上有索引。

于 2013-04-05T19:27:27.450 回答