projects
| id | name | task |
|---|---|---|
| 1 | pro_1 | 2:3 |
| 2 | pro_2 | 1:2 |
| 3 | pro_3 | 2:3:4 |
tasks
| id | name |
|---|---|
| 1 | task_1 |
| 2 | task_2 |
| 3 | task_3 |
| 4 | task_4 |
I list one task however projects table that id number is 3 have 3 tasks (2:3:4) values. How can I do this?
SELECT id as proID, name,(SELECT name from tasks where id = substring_index(projects.tak,":",-1) ) as taskName
from projects where id = 3
Result List that I want
| proID | name | taskName |
|---|---|---|
| 3 | pro_3 | task_2 |
| 3 | pro_3 | task_3 |
| 3 | pro_3 | task_4 |
CodePudding user response:
SELECT *
FROM projects
JOIN tasks ON FIND_IN_SET(tasks.id, REPLACE(projects.task, ':', ','));
But I agree with Tim Biegeleisen's comment - normalize your structure, replace projects.task column with junction table.
