Question

J'ai un travail et un tableau Sociétés , et je souhaite extraire 20 emplois répondant aux critères suivants:

  1. Emplois uniquement auprès de deux (2) entreprises nommées
  2. Il peut y avoir au plus 10 emplois par entreprise

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 qu'il s'applique à chacune des entreprises.

S'il n'y a pas 10 emplois par entreprise, la requête doit renvoyer tous les travaux trouvés.

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 dans MySQL, alors sachez qu’il existe peut-être un moyen plus intelligent de le faire plutôt qu'avec UNION. Toute suggestion d’amélioration est donc la bienvenue.

Était-ce utile?

La solution

Citant les les documents ,

  

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top