【发布时间】:2017-06-09 01:19:23
【问题描述】:
我正在尝试选择一个用户,该用户没有具有特定值的关联记录。
我有一个 User 模型,一个 User has_one Feed,一个 Feed has_many FeedTracks,一个 FeedTrack belongs_to Track。我只想选择没有具有特定 TrackId 的 FeedTrack 的用户。
我正在使用 Rails,但我愿意接受严格的 SQL。
我得到的最好的是:
SELECT TOP 1000 *
FROM Users u
LEFT JOIN Feeds f ON f.user_id = u.id
LEFT JOIN FeedTracks ft ON ft.feed_id = f.id
ONLY IF ALL OF THOSE feedTracks' track_id !== <<track_id>>
显然,最后一部分语句不是真正的 SQL,这就是我的问题。我怎么说,嘿,给我这个相关记录不存在的用户。但如果该记录确实存在,则不要返回该用户。
换句话说,如果该用户有一个提要,并且提要跟踪具有该跟踪 ID,则不要返回该用户。但如果没有,请返回该用户。
【问题讨论】:
-
您似乎定义了错误的架构,如果用户有一个提要,提要表应该有
user_id列,而不是用户表有feed_id列。请发布您的数据库架构。 -
很好,谢谢
标签: sql ruby-on-rails sql-server