2009-05-25 24 views
0

複数のクエリから結果を収集するSQLクエリを作成しようとしています。MySQL:複数のクエリのレコードを1つの結果に集める

ランダムソート順を適用して、限られた数のレコードを返すことを希望します。

クエリはすべて同じフィールド(この例では「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

関連する問題