Pregunta

Tengo una tabla de Trabajos y Empresas , y quiero extraer 20 trabajos que cumplan con los siguientes criterios:

  1. Trabajos solo de dos (2) empresas nombradas
  2. Puede haber como máximo 10 empleos por empresa

He intentado lo siguiente SELECT con UNION DISTINCT , pero el problema es que el LIMIT 0,10 se aplica a todo el conjunto de resultados . Quiero que se aplique a cada una de las empresas.

Si no hay 10 trabajos por empresa, la consulta debería devolver todos los trabajos que encuentre.

SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name IN ('Company1')
UNION DISTINCT
SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name IN ('Company2')
ORDER by name, title
LIMIT 0,10

Soy nuevo en MySQL, así que tenga en cuenta que puede haber una forma más inteligente de hacer esto en lugar de con UNION, por lo que cualquier sugerencia de mejora es definitivamente bienvenida.

¿Fue útil?

Solución

Citando los documentos ,

  

Para aplicar ORDER BY o LIMIT a un   SELECCIONAR individualmente, colocar la cláusula   dentro de los paréntesis que encierran   el SELECCIONAR:

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top