Создать функцию MySQL - PullRequest
       13

Создать функцию MySQL

0 голосов
/ 27 января 2020

В моем mysql dababase у меня есть 2 таблицы " бренды " и " модели "

CREATE table brands (
id int(11),
brand_name varchar(20));

CREATE TABLE models (
id int(11),
idBrand int(11),
model_name varchar(20));

Я хочу написать функции, позволяющие мне отобразить результат повторения, как это:

Brand_name      model_name
brand_1         model_1_1, model_1_2, model_l_3
brand_2         model_2_1, model_2_2, model_2_3  

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Вы можете использовать group_concat функцию:

select b.id, max(brand_name), group_concat(model_name)
from brands b join models m
on b.id = m.idBrand
group by b.id;

Или, если вы не хотите выбирать идентификатор, это также верно:

select brand_name, group_concat(model_name)
from brands b join models m
on b.id = m.idBrand
group by brand_name;

Вот демонстрационная версия

Если вы хотите получить возврат всего набора, вы можете создать процедуру:

CREATE procedure test_proc ()

BEGIN

 select brand_name, group_concat(model_name) model_name
 from brands b join models m
 on b.id = m.idBrand
 group by brand_name;

END

И вызвать ее так:

call test_proc();

Потому что как Вы можете увидеть здесь: https://dev.mysql.com/doc/refman/8.0/en/create-function-udf.html функции не могут возвращать данные такого типа ...

1 голос
/ 27 января 2020

Вы можете получить желаемые результаты, используя group_concat Mysql Функция, как показано ниже:

Select br.brand_name, 
group_concat(mod.model_name SEPARATOR ',') AS model_name
from brands br join models mod
on br.id = mod.idBrand
group by br.brand_name; 

Надеюсь, это поможет!

...