我有表tbl_restaurant(姓名,cuisine_id,....)和tbl_cuisine(cuisine_id,cuisine_name)如何使用加入該從MySQL
在tbl_restaurant,cuisine_id場包含逗號(,)分隔值如(3,6,9,20,31) ,當我嘗試使用連接拉烹飪名稱時,它只需要第一個ID(即:3)在上述情況下。 我有疑問:
SELECT tbl_restaurant.name, tbl_restaurant.cuisine_id, tbl_cuisine.cuisine_id,
tbl_cuisine.cuisine_name
FROM tbl_restaurant
LEFT JOIN tbl_cuisine ON tbl_restaurant.cuisine_id = tbl_cuisine.cuisine_id
WHERE tbl_restaurant.published =1
AND tbl_restaurant.id =$id
我應該解析之前使用連接或其他嗎?請提出任何建議。
的* 「正確的」 *的方法是固定的模式是正確的正常化。做一次修正,然後JOIN被固定(並且微不足道並且可能更快)更多。要跟上這種非規範化的方法(ick!ick!),請參閱http://stackoverflow.com/questions/10895764/mysql-join-comma-separated-field?rq=1以及類似內容。 – user2864740
將逗號分隔的值存儲在數據庫列中確實不是一個好主意,因爲它給你這麼多問題,並且會影響性能,因爲它不能用索引搜索;但MySQL函數[FIND_IN_SET()](http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_find-in-set)可能有助於 –
http://en.wikipedia .org/wiki/First_normal_form – GordonM