SQL - SELECT uniendo tablas a través de valores separados por PIPES

 
Vista:

SELECT uniendo tablas a través de valores separados por PIPES

Publicado por Marcos (3 intervenciones) el 12/07/2019 11:21:27
Hola!

No sé como conseguir esto con una query:

En una tabla tengo

Tabla Actividades
ID, codigo, descripcion
1, 12, Descripción de 12
1, 15 Descripción de 15
1, 23, Descripción de 23
1, 31, Descripción de 31

en otra tabla tengo

TABLA Clientes
ID, Cliente, Actividades
1, Antonio, 12|23|31 --> Lista de Actividades separadas por PIPE

Necesito una query qu eme devuelva:

Cliente | Actividades
Antonio | 12 - Descripción 12, 23 - Descripcion 23, 31 - Descripción 31

Como hago para separar por pipes en la SLEECT y recoger, concatenar y juntar todos los datos en una salida?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manuel
Val: 58
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

SELECT uniendo tablas a través de valores separados por PIPES

Publicado por Manuel (20 intervenciones) el 12/07/2019 12:47:27
Porque no usas IN para la lista de valores:
https://www.w3schools.com/sql/sql_in.asp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SELECT uniendo tablas a través de valores separados por PIPES

Publicado por Marcos (1 intervención) el 12/07/2019 13:33:58
No lo veo.... con un simple IN no puedo dar los valores separados por los PIPES y compararlos con la tabla Actividades....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SELECT uniendo tablas a través de valores separados por PIPES

Publicado por leonardo_josue (1172 intervenciones) el 12/07/2019 15:51:03
Buenos días Marcos:

En primer lugar. ¿Con qué BD's estás trabajando? Este dato es muy importante ya que cada DBMS tiene su propia sintaxis y sus propias funciones que te pueden servir.

En segundo lugar, ¿quién diablos diseño tus tablas? esto es un terrible diseño: el tener valores multivaluados en un campo está absolutamente prohibido, tanto que si estuvieras estudiando modelado de BD's y haces esto, entonces estarías reprobado, o peor aun, si estuvieras contratado para modelar una BD's empresarial, serías inmediatamente despedido (así de grave el asunto).

Si tienes oportunidad CAMBIA TU MODELO y evita problemas en el futuro. Si tienes una relación muchos a muchos como es el caso, entonces lo que haces es modelar con tres tablas, dos tablas catálogos y una tabla de relaciones.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SELECT uniendo tablas a través de valores separados por PIPES

Publicado por Marcos (3 intervenciones) el 15/07/2019 09:31:40
Entiendo lo que dices,

He llegado a un empresa donde esto ya estaba así.
La BBDD es mysql.

Dererepente un campo que retornaba un único valor "string" "Actividad Empresarial", el cliente ha querido hacerlo múltiple. ahora he de guardar múltiples opciones para un mismo valor.

He creado la tabla "Actividades Empresariales" donde cada una tiene su "código de actividad" y su descripción y en el campo original guardo los diferentes valores separador por pipes.

El sistema tiene un script "automático" para generar un excel desde un listado en pantalla. Ahora debo mostrar no solamente los ID de las actividades, sino su descripción.

En ese punto estoy... : )

Es posible montarlo en un select?

Gracias a todos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SELECT uniendo tablas a través de valores separados por PIPES

Publicado por marcos (3 intervenciones) el 15/07/2019 14:40:44
Solucionado con este join:

LEFT JOIN ecom_actividades_empresariales ON LOCATE(CONCAT('|',aemCod,'|'),CONCAT('|',cliActividad,'|'))

Gracias a tod@s!!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar