Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

228
Vistas
¿Cómo devuelvo todos los resultados de una unión interna al filtrar por un atributo de una tabla unida?

Tengo una consulta SQL que filtra los registros según el tipo de etiquetas que tienen. A veces, los registros tienen varias etiquetas. El problema es que cuando filtro por una etiqueta, los registros devueltos solo incluyen la etiqueta con la que filtré. Al filtrar por una etiqueta, me gustaría obtener todos los registros con esa etiqueta, con todas sus etiquetas.

es decir, al filtrar por "una etiqueta rosa" me gustaría tener... ingrese la descripción de la imagen aquí

Pero en lugar de eso, me sale esto... ingrese la descripción de la imagen aquí

A continuación se muestra mi consulta SQL

 var logsQuery = `PREPARE LogQuery (text) AS\ SELECT trackerlogs.*,\ trackers.serialnumber,\ trackers.active,\ trackers.actdate,\ trackers.deactdate,\ trackerclaims.devicename,\ trackerclaims.claimtype,\ t.id AS tagid,\ t.tagname,\ t.color\ FROM trackerlogs INNER JOIN\ trackers ON trackerlogs.deviceid = trackers.id\ INNER JOIN trackerclaims ON trackerclaims.deviceid = trackers.id\ LEFT JOIN\ (SELECT tags.*, trlogtags.logid AS logid from tags\ INNER JOIN trlogtags ON trlogtags.tagid = tags.id\ ${tags.length > 0 ? `AND t.id IN (${tags.join()})` : ""}\ EXECUTE LogQuery('${search === "" ? "%" : "%" + search + "%"}');`;

Creo que la parte relevante de la consulta es:

 ${tags.length > 0 ? `AND t.id IN (${tags.join()})` : ""}\

Sin embargo, cada vez que trato de cambiar esto, ya no puedo filtrar por etiquetas.

Cualquier ayuda es muy apreciada. Avíseme si la explicación no es clara, se necesita contexto adicional o si la respuesta está en otro lugar en StackOverflow y estoy ciego.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tal vez necesites esto en 2 pasos:

  1. Obtenga todos los registros que tienen la etiqueta que necesitará
  2. Unir todas las etiquetas de los registros del paso 1

Algo como esto:

 with selected_logs as ( select l.id as log_id from logs l join tags t on t.log_id = l.id and t.tag_name = '{{filter}}' ) select l.*, t.* from selected_logs sl join logs l on sl.log_id = l.id join tags t on t.log_id = sl.log_id
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda