Подстановка значений

cobria2

Новичок
Здравствуйте, помогите разобраться со следующим:
Имеется две таблицы
table1
=========================
| id | name | list |
=========================
| 1 | val1 | 2,20 |
=========================
| 2 | val2 | 3 |
=========================

table 2
===============================
| id2 | name2 |
===============================
| 2 | param2 |
===============================
| 20 | param20 |

Хочу получить результат
result
=============================
| id | name | list |
=============================
| 1 | val1 | param2,param20 |
=============================
| 2 | val2 | param2 |
=============================

Возможно ли это сделать одним запросом?
Спасибо
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
mysql?

ЗЫ: Нет, надо хранить данные нормально
ЗЗЫ: у тебя в итоговой выборке по представленным данным не должно быть строки с param3, ибо ей нет соответствия
 

cobria2

Новичок
Как лучше сорганизовать такие данные?
В ячейке table1.list список значений для элемента (от 1 до 20 шт), строк в таблице 4500
В table2 текстовые соответствия этим значениям (их ограниченное количество...400 строк)

Спасибо
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Для хранения колонки list нужно создать еще одну таблицу и связать данные через нее
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
cobria2, какие 20 колонок, я ответил развернуто на первый твой пост.

Код:
CREATE TABLE t1
    (`id` int, `name` varchar(4))
;
   
INSERT INTO t1
    (`id`, `name`)
VALUES
    (1, 'val1'),
    (2, 'val2')
;



CREATE TABLE t2
    (`id2` int, `name2` varchar(7))
;
   
INSERT INTO t2
    (`id2`, `name2`)
VALUES
    (2, 'param2'),
    (20, 'param20')
;

CREATE TABLE t3
    (`t1id` int, `t2id` int)
;
   
INSERT INTO t3
    (`t1id`, `t2id`)
VALUES
    (1, 2),
    (1, 20),
    (2, 2)
;


select t1.id, group_concat(t2.name2)
from t1
join t3 on t1.id=t3.t1id
join t2 on t2.id2=t3.t2id
GROUP BY t1.id
 
  • Like
Реакции: WMix

WMix

герр M:)ller
Партнер клуба
скажи ему group_concat и пусть наслождается. не готов он к другому...
 
Сверху