我有兩個表項,條件與下面分貝結構在MySQL數據庫所需的輸出需要查詢
ITEM =>
ID - INTEGER
ITEM_NAME - VARCHAR
CONDITION =>
CID - INTEGER
COND_NAME - VARCHAR
ITEM_ARRAY - VARCHAR (Stores all ITEM ID's separated by space
like: 1 5 9 17 18
CID COND_NAME IEM_ARRAY
1 C1 1 5 9
2 C2 9 17 18
3 C3 3 7 11
在我的前端部位應用中,我們已經給出選項,用戶可以選擇基於一個或多個項目我們必須簡短列出建議的項目
爲此,我們創建了一個ITEM_ARRAY列,它將相關ITEMS的信息按數組分隔。
我需要一個查詢來根據CONDITION表的相關ITEMS列出ITEM表中的所有ITEM_NAME。例如,如果用戶選擇1和9,那麼我們必須顯示ITEM ID(5 17 18)及其相應的ITEM NAME。喜歡這個。
ID | ITEM_NAME
---+-----------
5 | SOME ITEM1
17 | SOME ITEM2
18 | SOME ITEM3
我試着寫一個查詢
SELECT SUBSTRING(s.ITEM,2, LENGTH(s.ITEM))
FROM (SELECT REPLACE(ITEM_ARRAY," ",",") as ITEM
FROM `CONDITION`
WHERE ITEM like "% 1 5 %") s
上面的查詢顯示我的所有相關ITEM_ARRAY從條件表列表中,如果用戶選擇1到5,但如果用戶選擇像1一些不同的值, 9或1,17,18類ITEMS然後我的查詢無法列出相關項目。
我如何獲得所有相關的值。我們可以自由地對錶結構進行一些更改,而不會有數據冗餘。
請提出寶貴的建議,以解決問題。如果觸發器等其他概念可以幫助我們,請引導我。
感謝您回答vhu上面的結構更改在select語句中發生了一些小改動後爲我工作,即SELECT ITEM_ID FROM'condition_items' C2 WHERE C2.CID IN(SELECT DISTINCT c.CID as CID FROM'condition_items' c WHERE ITEM_ID IN(5 ,9,17))。感謝您的幫助。 – user3770778