Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Java MySQL |从多对多分组检索匹配项_Java_Mysql_Many To Many - Fatal编程技术网

Java MySQL |从多对多分组检索匹配项

Java MySQL |从多对多分组检索匹配项,java,mysql,many-to-many,Java,Mysql,Many To Many,考虑MySQL中的三个表: product id - name - (more columns, irrelevant) ... 13 - chair 64 - table method id - name 1 - welding 2 - stamping 10 - forging product-method (many-to-many) product_id - method_id 13 - 1 13 - 2 13 - 10 6

考虑MySQL中的三个表:

product  
id - name - (more columns, irrelevant) ... 
13  - chair  
64  - table  

method  
id - name  
 1 - welding  
 2 - stamping  
10 - forging

product-method (many-to-many)  
product_id - method_id 
13 -  1  
13 -  2  
13 - 10  
64 -  1
基本上,我需要的是链接到特定产品的方法列表。
在本例中,我希望获得用于制作椅子的所有方法(product_id 13 Inproduct method)。然后,返回的列表应为:

welding  
stamping  
forging 
我从这个问题开始:

SELECT method_id  
FROM `product-method`  
WHERE `product_id` = 13 
返回1,2和10

我尝试此查询以从返回的方法\u id中提取方法的名称:

它什么也不返回

我应该使用什么查询?

试试这个:

SELECT name
FROM method
WHERE id IN
  (SELECT method_id FROM product_method WHERE product_id = 13
  )
它从product_method table中获取给定product_id的适用方法_id,然后使用
WHERE
子句中的
IN
从方法表中查找方法的名称

或者,您可以像这样使用连接:

Select m.*
From method m join product_method pm
On m.id = pm.method_id
Where pm.product_id = 13;
另一种可能性

 select m.name from method m, product_method pm
 where pm.product_id=13 and pm.method_id=m.id
如果您只需要不同的值

 select distinct m.name from method m, product_method pm
 where pm.product_id=13 and pm.method_id=m.id

当然,您可以从方法向字段列表中添加更多字段,按id或名称排序,等等。

请参阅关于联接。不要在表/列标识符中使用“-”,我们早在1992年就基本上停止了以这种方式编写查询。加入21世纪吧
 select distinct m.name from method m, product_method pm
 where pm.product_id=13 and pm.method_id=m.id