Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取mysql中所选项目的相关项目_Mysql - Fatal编程技术网

获取mysql中所选项目的相关项目

获取mysql中所选项目的相关项目,mysql,Mysql,长时间侦听器,第一次调用。 我已经研究这个问题好几个小时了,但一直找不到我具体问题的答案 数据库中有三个与产品相关的表: tbl_项目(带有项目id,项目名称等…)--基本项目表 tbl_项目_术语(带术语id和术语名称)--描述性术语 tbl_item_term_map(带有item_id和term_id)--为项目分配术语 每个项目都有多个与之关联的术语。我试图做的是根据它们的术语显示与正在查看的项目相关的所有项目 例如: item1 has term1, term2, term3 as

长时间侦听器,第一次调用。 我已经研究这个问题好几个小时了,但一直找不到我具体问题的答案

数据库中有三个与产品相关的表:

  • tbl_项目(带有
    项目id
    项目名称
    等…)--基本项目表
  • tbl_项目_术语(带
    术语id
    术语名称
    )--描述性术语
  • 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

当我只运行嵌套查询时,它会像预期的那样返回分配给ID的五个字段。但是当我运行整个程序时,我得到了一个错误(#1064-您的SQL语法有一个错误;请查看与您的MySQL服务器版本对应的手册,在第9行的“”附近使用正确的语法)。这就是“不用于生产”的含义吗?

如果不用于生产,您可以使用它

SELECT tbl_item.id FROM tbl_item ti  
INNER JOIN tbl_item_term_map ttm on ttm.tbl_item_id = ti.id
INNER JOIN tbl_item_term tt on tt.id = ttm.tbl_item_term_id
WHERE tt.terms IN (

    SELECT tt.terms FROM tbl_item ti 
    INNER JOIN tbl_item_term_map ttm on ttm.tbl_item_id = ti.id
    INNER JOIN tbl_item_term tt on tt.id = ttm.tbl_item_term_id
    WHERE ti.id = 111;

 );

如果您发布表结构以获取代码位,会更容易提供帮助,但“不用于生产”是什么意思?我计划一旦准备好就把它放在网站上,所以我确实需要一些代码,我可以这样使用。不,我的意思是,如果是我,我会做第一次获取以获取项目的相关术语,然后将其存储在数组中,然后做第二次获取以该数组为基础获取相关项目。确保表也已正确索引。
SELECT tbl_item.id FROM tbl_item ti  
INNER JOIN tbl_item_term_map ttm on ttm.tbl_item_id = ti.id
INNER JOIN tbl_item_term tt on tt.id = ttm.tbl_item_term_id
WHERE tt.terms IN (

    SELECT tt.terms FROM tbl_item ti 
    INNER JOIN tbl_item_term_map ttm on ttm.tbl_item_id = ti.id
    INNER JOIN tbl_item_term tt on tt.id = ttm.tbl_item_term_id
    WHERE ti.id = 111;

 );