在MySQL中连接两个表,其中一个表在另一个表中具有多个值


Joining two tables in MySQL with one having multiple values in the other table

工具表:

id      tool_nr   
687      2902
745      2456
234      3245

产品表:

id      tool_id   something
3432     687       123456
4587     745       254786
4411     687       258956 
4741     234       874455 
8745     745       987445

因此,工具表id等于产品表tool_id。

我想要什么:

tool_nr     something
2902        123456
2456        254786
2902        258956
3245        874455
2456        987445

正如你所看到的,工具表id在产品表中可能有多个值,你知道我的查询给我的是用逗号分隔的"某物"值,但我需要更改它,我想知道最好的方法是什么?

试试这个:

SELECT t.tool_nr, p.something 
FROM Product p 
JOIN Tools t ON p.tool_id=t.id;
$result = mysql_query("SELECT 
                             t.tool_nr, 
                             p.something 
                       FROM tools t 
                       LEFT JOIN products p 
                       ON p.tool_id = t.id");

根据我的了解,您希望拥有与产品相同的元素顺序。你可以试试这个命令:

$result = mysql_query("SELECT Tools.tool_nr, p.something FROM Product  "
                       ." INNER JOIN Tools"
                       ." ON Product.tool_id = Tools.id"
                       ." ORDER BY Product.id");

它将为您提供所有行,其中存在用于给定产品的工具。如果您想显示所有产品,并且只显示适当产品的工具:

$result = mysql_query("SELECT Tools.tool_nr, p.something FROM Product  "
                       ." LEFT JOIN Tools"
                       ." ON Product.tool_id = Tools.id"
                       ." ORDER BY Product.id");

相反,如果你想显示所有工具,并且只显示这些工具的产品:

$result = mysql_query("SELECT Tools.tool_nr, p.something FROM Tools  "
                       ." LEFT JOIN Product"
                       ." ON Product.tool_id = Tools.id"
                       ." ORDER BY Product.id");