J'ai un Jobs et un Companies table, et je veux extraire 20 jobs qui répondent aux critères suivants:
J'ai essayé le SELECT
suivant avec UNION DISTINCT
, mais le problème est que le LIMIT 0,10
s'applique à l'ensemble des résultats. Je veux que cela s'applique à chacune des entreprises.
S'il n'y a pas 10 emplois par entreprise, la requête doit renvoyer tous les emplois qu'elle trouve.
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
Je suis nouveau sur MySQL, alors réalisez qu'il peut y avoir un moyen plus intelligent de le faire au lieu d'utiliser UNION, donc toutes les suggestions d'amélioration sont certainement les bienvenues.
Citant les docs ,
Pour appliquer ORDER BY ou LIMIT à un SELECT individuel, placez la clause à l'intérieur des parenthèses qui entourent le SELECT:
(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);