2009-05-25 4 views
0

여러 쿼리의 결과를 수집하는 SQL 쿼리를 만들려고합니다.MySQL : 여러 쿼리의 레코드를 하나의 결과로 수집

임의의 정렬 순서를 적용하고 제한된 수의 레코드를 반환하고 싶습니다.

쿼리는 모두 동일한 필드 (이 예제에서는 "RefCode")를 반환하지만 다른 FROM 및 WHERE 문을 갖습니다.

SELECT PD.RefCode 
FROM ((PD 
INNER JOIN P ON PD.PrdFK = P.PrdID) 
INNER JOIN PR ON PR.ChildCatFK = P.ChildCatFK) 
WHERE PR.ParentCatFK = 6 

SELECT PD.RefCode 
FROM (PR 
INNER JOIN PD ON PR.PrdDetFK = PD.PrdDetID) 
WHERE PR.ChildCatFK = 14 

나는이 사용하는 다양한 기술을하고 노력했다 (즉 UNION)하지만 올바른 방법을 얻을 수 없었다 :

은 몇 가지 가능한 쿼리 아래의 예를 참조하십시오.

레코드의 임의 정렬 및 제한 (RAND()LIMIT 0,10 사용)은 필수는 아니지만 가지고 있으면 좋을 것입니다.

이것이 가능합니까 아니면 각 쿼리를 개별적으로 만들어야합니까?

답변

3

UNION을 사용하여 쿼리를 결합하십시오. 결과를 ORDER BY 및 LIMIT 할 수 있도록 하위 쿼리에 래핑하십시오.

SELECT RefCode 
FROM (
    SELECT PD.RefCode 
    FROM PD 
    INNER JOIN P ON PD.PrdFK = P.PrdID 
    INNER JOIN PR ON PR.ChildCatFK = P.ChildCatFK 
    WHERE PR.ParentCatFK = 6 

    UNION ALL 

    SELECT PD.RefCode 
    FROM PR 
    INNER JOIN PD ON PR.PrdDetFK = PD.PrdDetID 
    WHERE PR.ChildCatFK = 14 

) subquery 
ORDER BY RAND() 
LIMIT 10 
+0

완벽하게 작동합니다. – ticallian

관련 문제