Frage

Ich habe eine Jobs und Unternehmen Tabelle, und ich will 20 Arbeitsplätze extrahieren, die die folgenden Kriterien erfüllen:

  1. Jobs nur von zwei (2) genannten Unternehmen
  2. Es kann höchstens 10 Arbeitsplätze pro Unternehmen

ich habe folgende SELECT mit UNION DISTINCT versucht, aber das Problem ist, dass der LIMIT 0,10 auf das gesamte Ergebnismenge gilt. Ich mag es jedem des Unternehmens anzuwenden.

Wenn es nicht mehr als 10 Arbeitsplätze pro Unternehmen sind, dann sollte die Abfrage alle zurückkehren, die Arbeitsplätze es findet.

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

Ich bin neu in MySQL, so zu erkennen, kann es zu einer intelligenteren Weg, dies mit UNION statt zu tun, also irgendwelche Vorschläge für Verbesserungen sind auf jeden Fall begrüßen zu können.

War es hilfreich?

Lösung

die docs ,

  

Um ORDER BY oder LIMIT auf eine Anwendung   einzelne SELECT, legen Sie die Klausel   innerhalb der Klammern, die einschließen   die 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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top