长时间侦听器,第一次调用者。 我一直在研究这个问题几个小时了,一直无法找到我的具体问题的答案。在mysql中获取所选项目的相关项目
我有相关的产品数据库的三个表:
- tbl_item(与
item_id
,item_name
,等...) - 基本项目表 - tbl_item_term(与
term_id
和term_name
) - 描述性术语 - tbl_item_term_map(与
item_id
和term_id
) - 分配的术语项
每个项目都有多个与它们相关的术语。我想要做的是根据他们的条款显示与正在查看的项目相关的所有项目。
例如:
item1 has term1, term2, term3 assigned to it<br>
item2 has term2, term4, term6 assigned to it<br>
item3 has term4, term5, term6 assigned to it
在每件商品页面,我想展示相关产品。在这种情况下,item3将显示item2作为相关产品,因为它共享term4。
我发现了一些有用的回答左加入三表问题,但没有什么符合这种特殊情况。提前致谢!
克里斯
编辑
这里是Sajuna提供的代码剪断,修改,以反映我的表/字段名:
SELECT ti.item_name FROM tbl_item ti
INNER JOIN tbl_item_term_map ttm on ttm.item_id = ti.item_id
INNER JOIN tbl_item_term tt on tt.term_id = ttm.term_id
WHERE tt.term_id IN (
SELECT tt.term_name FROM tbl_item ti
INNER JOIN tbl_item_term_map ttm on ttm.item_id = ti.item_id
INNER JOIN tbl_item_term tt on tt.term_id = ttm.term_id
WHERE ti.item_id = 2536;
);
当我跑得嵌套查询,它按预期方式返回分配给该ID的五个字段。但是当我运行整个事情时,我得到一个错误(#1064 - 你的SQL语法有错误;检查对应于你的MySQL服务器版本的手册,在第9行附近使用正确的语法)。这是什么意思是“不适合生产”?
如果您发布了您的表结构,它会更容易帮助 –