使用数组选择2行或更多行(PHP,MYSQLi)

时间:2014-09-01 20:48:36

标签: php mysqli

好的,我不确定如何标题。

我有2张桌子,一张是产品,另一张是商家。

有些产品可以由2个或更多商家出售。

products表有一个名为'product_merchant_id'的列,里面有一个或多个引用,就像这样......'1237,38272,3738'

ID与'商家'表中'merchant_id'列中的内容有关。

商家表(商家)

mer_id | merchant_id | merchant_name
-------------------------------------
1    |    1237     | Merchant One 
2    |    38272    | Merchant Two
3    |    3738     | Merchant Three

产品表(产品)

product_id   |   product_merchant_id   |  product_name
------------------------------------------------------------
    1        |   1237, 38272           |  Sample Product One
    2        |   1237, 3738, 38272     |  Sample Product Two
    3        |   3728                  |  Sample Product Three

所以,基本上,如果我查询product_id 2,我希望能够使用1237&的merchant_id来拉2行。来自商家表的38272并将它们循环到我的模板中,类似于......

<div>
    <p>Merchant Name: Merchant One</p>
    <p>Merchant ID: 1237</p>
</div>
<div>
    <p>Merchant Name: Merchant Two</p>
    <p>Merchant ID: 38272</p>
</div>

1 个答案:

答案 0 :(得分:3)

解决方案是更改表结构。删除Product表中的product_merchant_id列,然后创建一个名为product_merchants的新表,其中包含两列:product_idmerchant_id。它看起来像:

product_id | merchant_id
--------------------------
1          |    1237 
1          |    38272
2          |    1237
2          |    2728   
2          |    38272   
3          |    3738     

现在,您可以使用联接来获取所需的所有信息。这样的事情应该有效:

SELECT m.merchant_name, m.merchant_id
FROM merchants m
JOIN product_merchants mp ON m.merchant_id = mp.merchant_id
    AND mp.product_id = 2

See demo