2014-09-01 55 views
2

好吧,我不確定如何標題。使用數組選擇2行或更多行(PHP,MYSQLi)

我有兩張桌子,一張是商品,另一張是商家。

部分產品可以由2個或更多商家銷售。

產品表中有一個名爲「product_merchant_id」與它,1個或多個引用,像這樣的列..「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,我希望能拉與2行merchant_id's of 1237 & 38272 from the merchant table and loop them in my template,like like ...

<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> 
+2

它看起來像你的數據庫是因爲'product_merchant_id'有多個值由','這使得它有點難以查詢數據庫作爲單獨的不歸據我所知 – Class 2014-09-01 20:53:10

+0

多數民衆贊成我是如何試圖做到這一點。我認爲將商家ID放在每個產品的陣列中會更簡單。你認爲我應該使用一張單獨的桌子嗎? – 2014-09-01 20:54:37

+1

你應該真的有另一個表,你的供應商匹配的產品。例如:'id','supplier_id','product_id'。然後你可以使用JOIN來獲取你想要的信息。 – Jono20201 2014-09-01 20:54:41

回答

3

的解決辦法是改變你的表結構簡單。刪除產品表中的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

+0

是的,我想我會用這樣的東西去。我可以在我的PHP中使用while循環來使用來自新product_merchants表的信息獲取商人表中的不同商家行..我也會給Coder匿名人員的答案一個嘗試,因爲它很高興知道不止一種做法。 。每天學習新東西..謝謝大家! – 2014-09-01 21:10:42

+1

@EoinH太棒了,很高興幫助:)請注意,如果它有幫助,我只是在我的答案中添加了一個演示。祝你好運! – 2014-09-01 21:12:17

+1

起初沒有看到sqlfiddle,感謝您花時間做這些..非常感謝。 – 2014-09-01 21:14:54

2

像這樣的東西可以幫助:

Select * from merchants where merchant_id in ((select product_merchant_id from products where product_id=2)) 

我相信這應該工作。

+0

謝謝,看起來不錯。我會給這個鏡頭看看它是如何工作的。 – 2014-09-01 21:04:02

2

我的建議是你可以添加一個表,像將被映射的product_id和MERCHANT_ID庫存表,你會得到STOCK_ID它將使開發