ネストされた IN 内で制限を使用できないことはわかっていますが、これを行う方法があると思います。方法がわかりません。
評価とコメントの両方を含む表があります (説明のために簡略化しています)
したがって、
mySingleTable: +----+------------------+-----------+-----------+- ----------------+ | | ID | レビュアーコメント | is_rating | 親 ID | レビュアー評価 | +----+------------------+-----------+-----------+- ----------------+ | | 1 | よくやった 1 | 0 | 5つ星 | | | 2 | コメントAonRateA | 0 | 1 | | | | | 3 | コメントBonRateA | 0 | 1 | | | | | 4 | コメントConRateA | 0 | 1 | | | | | 5 | コメントDonRateA | 0 | 1 | | | | | 6 | コメントEonRateA | 0 | 1 | | | | | 7 | コメントFonRateA | 0 | 1 | | | | | 8 | よくやった 1 | 0 | 4つ星 | | | 9 | よくやったレートC | 1 | 0 | 5つ星 | | | 11 | よくやった 1 | 0 | 3 つ星 | | | 12 | よくやったレートE | 1 | 0 | 2 つ星 | | | 13 | よくやった 1 | 0 | 5つ星 | | | 14 | よくやった 1 | 0 | 3 つ星 | | | 15 | コメントAonRateD | 0 | 11 | | | +----+------------------+-----------+-----------+- ----------------+
is_rating = 1 の場合、その評価です。
is_rating = 0 の場合、評価に関するコメントです (その親評価は、parent_id=id の場所です)
したがって、これは次のようになります。
よくやったレートA ***** コメントAonRateA コメントBonRateA コメントConRateA コメントドンレートA コメントEonRateA コメントFonRateA よくやったレートB **** よくやったレートC ***** よくできたレートD *** コメントAonRateD よくやったレートE ** よくやったレートF ***** よくやったレートG ***
私がやりたいことは、1 つのクエリのみを使用して、最新の 5 つの評価と、関連付けられた最新の 5 つのコメントを選択することです
したがって、これら2つを結合する方法は次のとおりです。
SELECT ratings.*
FROM mySingleTable as ratings
WHERE
is_rating = 1
ORDER BY timestamp DESC LIMIT 0, 5
SELECT comments.*
FROM mySingleTable as comments
Where
comments.parent_id = ratings.id
AND is_rating = 0
ORDER BY timestamp DESC LIMIT 0, 5
2 番目のクエリは、何らかの方法で評価クエリについて知る必要があります。