sql - 无法确定连接查询
问题描述
我有一个名为products的表,一个product_taxonomies product_taxonomies 有 product_id 和 taxonomy_id 字段我正在尝试获取链接到多个 product_taxonomies 的产品。使用:
SELECT "products".* FROM "products" right outer join product_taxonomies on product_taxonomies.product_id = products.id WHERE "product_taxonomies"."taxonomy_id" = $1 AND "product_taxonomies"."taxonomy_id" = $2 LIMIT $3 [["taxonomy_id", 39], ["taxonomy_id", 29], ["LIMIT", 10]]
我无法获得同时具有这两个分类 ID 的产品。如果我在 [29,39] 中使用 where taxonomy_id ,它将返回具有其中任何一个的任何产品,而不是同时返回两者。我尝试了所有我知道的连接。这是在 Rails 中完成的,但可以使用 SQL 回复。
解决方案
首先,我不明白您为什么要使用外连接。
其次,当您加入 时product_taxonomies
,您要求的是taxonomy_id
具有两个不同值的记录。这样的记录是不可能存在的。
我认为你想要的是加入两次这样的product_taxonomies
事情:
select p.*
from products p
join product_taxonomies t1
on t1.product_id = p.id
and t1.taxonomy_id = $1
join product_taxonomies t2
on t2.product_id = p.id
and t2.taxonomy_id = $2
如果您想让它对taxonomy_id
值列表更具可扩展性,请在评论中说明。
推荐阅读
- javascript - 反应询问jwt是否对重定向有效
- webpack - 我可以使用 webpack 捆绑 Next.js 自定义服务器吗?
- php - 错误:调用数组上的成员函数。在foreach里面。Symfony
- javascript - 数组值的计算在 JS 中不起作用
- javascript - 如何获得在用户同意期间授予范围的用户的子用户?
- matlab - OpenGL:沿 z 坐标平移纹理不会产生任何效果
- node.js - Angular - 创建一个需要 2 个日期和一周中的一天的函数,并创建一周中同一天的日期数组
- python - ValueError:轴与数组不匹配 - 无法转置数组
- ruby-on-rails - Rails 用 odoo 设计了omnioauth
- python - seaborn中小提琴图的透明面