【发布时间】:2017-10-13 17:29:34
【问题描述】:
我有一个名为 review 的 VIEW,它与汽车表相关,并且汽车表与表标签有多对多关系(通过名为 cars_tags 的连接表),但我需要的是从汽车中检索评论它们与一些标签相关,同时与另一个标签相关。我今天的SQL代码如下:
SELECT "cars"."review".*
FROM "cars"."review"
LEFT JOIN cars.cars ON (cars.review.car_id = cars.cars.id)
LEFT JOIN cars.makes ON (cars.cars.make_id = cars.makes.id)
LEFT JOIN cars.cars_tags ON (cars.cars.id = cars.cars_tags.car_id)
LEFT JOIN cars.tags ON (cars.cars_tags.tag_id = cars.tags.id)
WHERE (cars.tags.id IN ('91782e95-8c5d-4254-82ab-b11a21306c18'))
AND (cars.tags.id IN ('031cec30-df27-471e-858d-53c3d9657c8a'))
ORDER BY "cars"."review"."score" DESC LIMIT 100
这个 SQL 没有给我带来任何结果,但我确信有与第一个 id 相关的汽车:'91782e95-8c5d-4254-82ab-b11a21306c18'AND '031cec30-df27-471e-858d-53c3d9657c8a'时间。
我做错了什么?
【问题讨论】:
-
您的查询是说 - “只带回
cars.tags.id在 '917...' 和cars.tags.id同时在 '031...' 中的结果”。当然,没有一个标签可以同时是两个不同的东西!试试cars.tags.id in ('917...', '031...'),它实际上是说“带回与这些条件中的任一匹配的标签” -
但我真正需要的是与 ONE ID 和 OTHER ID 同时相关的结果
-
我误会了你——没有什么能满足 X = 'A' AND X = 'B'。你所说的“相关”是什么意思?编辑:等等,我想我明白了,给我一分钟
标签: sql postgresql relationship