Pergunta

eu tenho um Empregos e a Empresas Tabela, e eu quero extrair 20 empregos que atendem aos seguintes critérios:

  1. Empregos apenas de duas (2) empresas nomeadas
  2. Pode haver no máximo 10 empregos por empresa

Eu tentei o seguinte SELECT com UNION DISTINCT, mas o problema é que o LIMIT 0,10 aplica -se a todo o conjunto de resultados. Eu quero que ele se aplique a cada uma das empresas.

Se não houver 10 empregos por empresa, a consulta deve devolver todos os trabalhos que encontra.

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

Eu sou novo no MySQL, então percebo que pode haver uma maneira mais inteligente de fazer isso em vez de com a União, portanto, qualquer sugestão de melhorias é definitivamente bem -vinda.

Foi útil?

Solução

Citando os documentos,

Para aplicar a ordem ou limitar a um indivíduo Selecionar, coloque a cláusula dentro dos parênteses que incluem a seleção:

(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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top