Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
¿Por qué sucede esto en SQL y cómo resolverlo?

Estoy desarrollando un servidor que toma las solicitudes enviadas por POST y las distribuye a los agentes activos que consultan una base de datos MySQL. Tengo dos tablas, la tabla de users y la tabla de requests . Cada vez que recibo una nueva solicitud, ejecuto una consulta que consulta los agentes activos y los ordena por número de solicitudes en cola y la marca de tiempo de la última acción realizada. Hasta ahora funciona bien.

El problema es que cuando tengo un agente que necesita desconectarse, tengo que redistribuir las solicitudes en cola entre los otros agentes. Para ello implementé un forEach que pasa por cada solicitud, luego realizo la consulta de agentes activos y tomo la primera fila y le asigno la solicitud a esa. La falla es que no sé por qué al mismo agente se le asigna la misma tarea, ya que la consulta del agente activo se repite para cada solicitud y, por lo tanto, debería aumentar la cantidad de solicitudes en cola del agente inmediatamente anterior.

Aquí está el código que he implementado:

 app.post('/panel/redist', function (peticion, respuesta) { pool.getConnection(function (error, connection) { let query = '' // Look pends requests ## query = `select * from solicitudes where status = 1` connection.query(query, function (error, solicitudes, campos) { if (solicitudes.length > 0) { solicitudes.forEach(solicitud => { // Look active agents and order by number of requests and timestamp query = `select usuarios.id, nombre, count(agente) conteo, last_action from usuarios left join solicitudes on usuarios.id = solicitudes.agente where usuarios.login = 'active' and tipo_usuario = 1 group by nombre order by conteo asc, last_action asc` connection.query(query, function (error, agentes, campos) { if (agentes.length > 0) { query = `UPDATE solicitudes SET agente = ${connection.escape(agentes[0].id)}, status = '2' WHERE id=${solicitud.id}` connection.query(query, function (error, campos, filas) { console.log(`Success asign to:${solicitud.id}`) }) } }) }) } }) connection.release() respuesta.json({ type: 'success' }) }) })

Esto está en Node.js usando el conector mysql2.

Gracias.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda