Ho un Jobs e un Aziende tavolo, e voglio estrarre 20 posti di lavoro che soddisfano i seguenti criteri:La combinazione di operazioni LIMIT UNION e nella query MySQL
- Jobs solo da due (2) società citate
- Non ci possono essere al massimo di 10 posti di lavoro per azienda
ho provato il seguente SELECT
con UNION DISTINCT
, ma il problema è che t he 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 deve restituire tutti i lavori trovati.
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, in modo da realizzare ci può essere un modo più intelligente per fare questo invece che con UNION, in modo che qualsiasi proposte di miglioramento sono sicuramente il benvenuto.
stavo andando da la documentazione di MySQL che diceva che l'ORDINE BY arrivava dopo l'UNIONE ..... e dimenticava le parentesi! Grazie –
@Mauro, che ne dici di accettare la risposta, se ti risolve il problema, eh?! -) Usa il segno di "segno di spunta" sotto il numero di upvotes (attuale tre ...) ... –
Questo funziona in MySql, ma non sembra che SQLite supporti questo nel caso qualcuno si imbattesse in questa domanda su google –