データベースに 2 つのテーブルがあります。1 つのテーブルはマスター テーブルで、もう 1 つのテーブルは子テーブルです。ユーザーが検索を実行すると、マスター テーブルのレコードのみがクエリされ、プラス記号をクリックすると、子レコードが検索されます。クエリは次のようなものです。
SELECT * FROM TableA
GROUP BY id
LIMIT 0,10;
ユーザーが子テーブルに適用可能な検索条件を選択した場合にのみ、子テーブル (TableB) に内部結合します。次に例を示します。
SELECT * FROM TableA a
INNER JOIN TableB b on b.MasterId = a.id
GROUP BY a.id
LIMIT 0, 10;
上記のすべては、エクスポートする必要がある場合を除いて正常に機能します。ユーザーがエクスポートする場合、データの別のビューを使用し、マスターと子のレベルがなく、フラットアウトされた結果であるため、たとえば、LIMIT を実行する場合検索で 0,10 を入力すると、10 個のマスター レコードが返されますが、10 個の子レコードを持つ 1 つのマスター レコードがある場合、エクスポートでは、マスターと子の両方の情報を含む 10 個のレコードのみが返されますが、最初のレコードのみが返されます。ビューに対してクエリを実行しているため、検索からのマスターレコードであり、同じレコードではない場合もあります。エクスポートのクエリは次のようになります。
SELECT * FROM TableC
LIMIT 0,10;
TableC
は基本的に と からフラット化されたデータのビューですが、フラット化されTableA
てTableB
いるため、 を適用LIMIT
しても適切に適用されません。
この問題を回避する方法はありますか? 解決策はありますか?