如何在连接 3 个表时进行搜索但排除其中之一的结果?
我已经花了几个小时才得到一个特定的结果,但在网上没有找到任何答案 - 由于我根本不是 SQL 专家,所以我在这里问一个问题。
我有 3 个表:user
(id
, name
...), cars
(id< /code>、
type
、color
、engine power
...)和一个中间表来保存用户给汽车的所有分数: 分数
(id
, user_id
、car_id
、score
)。
我试图找到一个可以为某个特定用户返回的查询,即他尚未评分的所有汽车。我已经尝试过以下操作,但它返回 null:
$q=mysql_query("SELECT * FROM cars LEFT OUTER JOIN scores ON cars.id = scores.car_id WHERE scores.user_id != ('".$userId."')");
有人有线索吗?
I've been tying for hours now to get a particular result and haven't found any answer on the web - and as I'm not an SQL expert at all, I'm asking a question here.
I have 3 tables: user
(id
, name
...), cars
(id
, type
, color
, engine power
...) and an intermediary table to save all the scores users gave to the car: scores
(id
, user_id
, car_id
, score
).
I'm trying to find a query that could return for one particular user, all the cars that he hasn't rated yet. I've tried the following but it returns null:
$q=mysql_query("SELECT * FROM cars LEFT OUTER JOIN scores ON cars.id = scores.car_id WHERE scores.user_id != ('".$userId."')");
Does someone have a clue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用您的代码进行少量修改:
You can use your code with small modification:
其中
?
是该特定用户的 ID。此处,
scores
与(car_id, user_id)
的复合索引很有用。where
?
is the ID of that particular user.A composite index in
scores
over(car_id, user_id)
is useful here.