2015-09-25 107 views
1

我有兩個表。一個是product_details,另一個是size。 每個產品有多種尺寸。
我必須爲每個產品設定尺寸(如100,125,150)。
但我已經在product_details表中將大小記錄保存爲JSON值(如[「1」,「2」,「8」])。
當我嘗試使用IN子句得到記錄&子查詢,我無法獲得記錄。 檢查此鏈接:click here sqlfiddleMysql子查詢IN子句通過JSON值查找

SELECT po_det.po_det_size as json_str, 
REPLACE(REPLACE(REPLACE(po_det.po_det_size, '[',''),']',''),'"','')) str, 
(SELECT GROUP_CONCAT(size.size_name) 
FROM tbl_product_size size 
WHERE size.size_id IN (str) 
) AS sizes 
FROM tbl_purchase_order_details po_det 

請幫我弄的記錄。

回答

2

對此,您不能使用in。您可以使用find_in_set()

where find_in_set(size.size_id, str) > 0 

我不認爲你可以在子查詢中使用列別名,所以這可能是另一個問題:

where find_in_set(size.size_id, REPLACE(REPLACE(REPLACE(po_det.po_det_size, '[',''),']',''),'"',''))) > 0 
+0

嗨,它的工作。非常感謝您節省我的時間.. –