我有两个表项,条件与下面分贝结构在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