2015-01-27 135 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}