加入MySQL中的两个表具有多个值,一个在其他表

问题描述:

工具表:加入MySQL中的两个表具有多个值,一个在其他表

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可能有多个值在产品列表中,右键知道我的查询是给我的“东西”值与逗号一起分开了,但我需要改变它,我想知道什么是最好的方式来做到这一点?

+0

显示您的查询 – allen213 2012-08-02 07:50:11

+0

$ sql_string2 =“SELECT t.tool_nr,p.blabla_nr,p.something FROM tools t RIGHT JOIN products p ON p.tool_id = t.id AND t.status IN('Blala',' Blala') WHERE t.id ='“。$ row [”id“]。''\t \t \t \t \t \t GROUP BY p.tool_id ORDER BY p.blabla_nr DESC“; – Myt 2012-08-02 07:53:25

+0

请问您的查询,你想如何输出看起来像? – PoeHaH 2012-08-02 07:53:37

试试这个:

SELECT t.tool_nr, p.something 
FROM Product p 
JOIN Tools t ON p.tool_id=t.id; 
+0

谢谢,但它没有工作,它给了我所有的价值在一行,但我希望每个“东西”价值在不同的行:) – Myt 2012-08-02 08:04:31

+1

你需要哪种输出?当我读了你的问题,你想是这样 'tool_nr something' '2902 123456' '2456 254786' '2902 258956' '3245 874455' '2456 987445' – 2012-08-02 09:20:22

+0

是啊,我确实需要这一点,我知道了,这是我的错,它不起作用,因为我正在使用另一个无用的sql查询。感谢您的帮助,我欣赏它。 – Myt 2012-08-02 10:02:23

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

我没有得到什么问题,但它只是在一行中回应“某些事情”的价值观。我希望他们在不同的行上,但我很感激帮助。 – Myt 2012-08-02 08:22:21

+0

你是什么意思? 2个“东西”行? – sephoy08 2012-08-03 00:24:02

+0

我用了一些东西,就像我需要从数据库中获得的值:)我需要将这些值放在不同的行上,但是我知道了,这是我的错,它一开始并不工作,所以谢谢你的帮助。 – Myt 2012-08-03 05:47:57

从我所收集你想拥有的元素相同的顺序,因为它是产品。 你可以试试这个命令:

$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"); 
+0

非常感谢:) – Myt 2012-08-02 08:34:49