Domanda

Ho una Offerte di lavoro e una Società e desidero estrarre 20 lavori che soddisfano i seguenti criteri:

  1. Lavori solo di due (2) società denominate
  2. Possono esserci al massimo 10 lavori per azienda

Ho provato il seguente SELECT con UNION DISTINCT , ma il problema è che LIMIT 0,10 si applica all'intero set di risultati . Voglio che si applichi a ciascuna delle società.

Se non ci sono 10 lavori per azienda, la query dovrebbe restituire tutti i lavori che trova.

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

Sono nuovo di MySQL, quindi renditi conto che potrebbe esserci un modo più intelligente per farlo invece che con UNION, quindi eventuali suggerimenti per miglioramenti sono sicuramente benvenuti.

È stato utile?

Soluzione

Citando i documenti ,

  

Per applicare ORDER BY o LIMIT a un   SELECT individuale, inserire la clausola   tra parentesi che racchiudono   SELEZIONA:

(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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top