0

I am trying to figure out how to select an item from table by his column name p.e.

strucutre looks like this

table items

id | name | column_1 | column_2 | column_3 |
 1 | nm1  | 1        | 4        | 7,8      |
 2 | nm2  | 2,3      | 4        | 9        |
 3 | nm3  | 3,1      | 4        | 7        | 

table columns

id | c_name |
 1 | cnm1   | 
 2 | cnm2   |
 3 | cnm3   |

table column_values

id | c_id | value |
 1 |  1   | abcd  |
 2 |  1   | cdbh  |
 3 |  1   | dsff  |
 4 |  2   | wewe  |
 5 |  2   | cgbh  |
 6 |  2   | cdlh  |
 7 |  3   | adbh  |
 8 |  3   | qdbh  |
 9 |  3   | pdbh  |

So when I wanted to find "abcd" I tried

"SELECT a.* FROM items a, columns b, column_values c WHERE c.`value` LIKE '%abcd%' GROUP BY a.`id`"

but I knew this will find nothing without any conections so i went further

"SELECT a.* FROM items a, columns b, column_values c WHERE c.`value` LIKE '%abcd%' AND b.`id` = c.`c_id` GROUP BY a.`id`"

still no proper connection with item

and here is the problem there is a changing amount of columns and the name contains id of the column and value is set of ids of column values.

So i need to select item by his name which is "name+"column_id in column_values by FIND IN SET cause if i look for abcd it is id 1 and there are two items which have id 1 in column_1

item 1 and item 2

ALSO id of values are AI so there is not possibility of duplicate so there is no need to check of column_id to search in proper column in item table

it can work something like for from 0 - 30 p.e. and it will search in column_1, column_2 column_3 until 30 for id match

user3175393
  • 109
  • 1
  • 10

0 Answers0