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

268
Vistas
cómo escribir una subconsulta dentro de la declaración de unión

Esta es mi subconsulta:

 const subquery = async () => { return await knex.select('*') .from('contracts') .where('estate_id', '=', estateid) }

Y así es como lo estoy insertando en la declaración de unión:

 const data = await knex('clients') .join(await subquery(), 'clients.client_id', 'contracts.client_id')

Pero esto da como resultado un error, mi pregunta es cuál es la forma correcta de escribir una subconsulta y luego incluirla dentro de una declaración de combinación, usando async/await.

En los documentos hay una mención sobre las subconsultas, pero no es para el caso de combinación y no intento adaptarlo a un caso de combinación:

 knex('users').where('votes', '>', 100) const subquery = knex('users') .where('votes', '>', 100) .andWhere('status', 'active') .orWhere('name', 'John') .select('id'); knex('accounts').where('id', 'in', subquery)
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No es necesario esperar la subconsulta, simplemente puede pasar una función que represente la subconsulta como el primer argumento de la combinación. es decir

 const data = await knex('clients') .join(function() { this.select('*') .from('contracts') .where('estate_id', '=', estateid); }, 'clients.client_id', 'contracts.client_id');

Tenga en cuenta que la referencia a knex cambia de knex a this una vez dentro de la subconsulta. Si desea mantener la subconsulta separada, debería poder hacerlo como

 const subquery = function() { this.select('*') .from('contracts') .where('estate_id', '=', estateid) } const data = await knex('clients') .join(subquery, 'clients.client_id', 'contracts.client_id')
about 4 years ago · Juan Pablo Isaza 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