2015-01-27 47 views
-1

您好我有MySQL的函數,返回名稱,而不是ID

id | itemName | suppliers 
1 | uSDReader| 1,2,3,4,5 

供應商列表tbl_itemlist包含逗號分隔值 例如:(1,2,3,4,5)

哪從其他表對應的供應商名稱tbl_supplier

id | supplierName 
1 | Supplier 1 
2 | Supplier 2 
3 | Supplier 3 
4 | Supplier 4 
5 | Supplier 5 

是否存在的MySQL的,當我查詢使用SELECT ITEMLIST表,像連接,供應商列將任何內建的功能僅返回名稱而不是供應商的ID。 ex:

id | itemName | suppliers 
1 | uSDReader| Supplier 1,Supplier 2,Supplier 3,Supplier 4,Supplier 5 
+6

參見[是存儲在數據庫列中的分隔列表真的很糟糕嗎?](http://stackoverflow.com/a/3653574) – eggyal 2015-01-27 00:13:10

+3

令人難以置信的糟糕設計:你真的應該規範化你的數據庫 – 2015-01-27 00:13:27

+2

_Spoiler:答案是__yes __._ – potashin 2015-01-27 00:13:36

回答

0

確實有一個非常糟糕的MySQL模式。您必須創建3個表,分別命名爲tbl_itemlist,tbl_suppliers,tbl_itemsupplies

tbl_itemslisttbl_suppliers與您的tbl_itemslist供應商列刪除相同。

你的新表,tbl_itemsupplies,必須包含這些確切的列:iditem_idsupplier_id

您可以檢查其供應商確實有該項目中包含一個簡單的查詢:

SELECT `supplier_id` FROM tbl_itemsupplies WHERE `item_id`= {$itemid}