0

私は何時間もこの問題の解決策を探していましたが、まだ何も解決していないので、ここにいます.

4 つのデータテーブルを持つデータセットがあります。

    DS
    +Parent
    ++Child1
    ++Child2
    ++Child3

pk を使用して親を子にリンクするデータセットの関係を定義しました。

問題は、(dataadapter.fill メソッドを使用して) 子テーブルを埋めるときに、データベースが親に関連するレコードだけでなくすべてのレコードを返すため、データテーブルが必要以上に大きくなり、処理に時間がかかることです。このコードはモバイル デバイス用であるため、プレミアムです。

これは親データに依存するため、親で行うように子で WHERE フィルターを使用することはできません。

子テーブルを埋めるときに、親に関連するレコードのみを返す方法はありますか?

これは単純なものだと思っていたので、ここで何かを見ているに違いありません?!?

みんなありがとう。

編集: SELECT コマンドを作成する時点でわかっている唯一の ID は、親テーブルの単一の共通識別子です。このデータは存在しないため、子テーブルをフィルタリングするのは適切ではありません。親 PK のみが存在するため、これは不明です。

4

2 に答える 2

0

親PK =子fkを使用して子テーブルにリンクしていると述べたので、子テーブルにparentid列があります。したがって、親テーブルに入力するクエリの形式が SELECT * FROM 親 WHERE 親 ID = @parentid であるのと同様に、子テーブルに入力するクエリの形式は SELECT * FROM child1 WHERE 親 ID = @parentid になります。

于 2013-01-16T23:50:30.923 に答える
0

親 ID しかわからず、子テーブルに必要なレコードを判断するのに十分でない場合は、ビジネス ロジックをカプセル化するネストされた選択を試すことができます。

SELECT * 
FROM child1 c
WHERE c.myforeignkey in 
    (
    select p.myforeignkey
    from parent p
    where p.parentid = ...
    )

おそらくLEFT JOINで?

SELECT c.* 
FROM child1 c
LEFT JOIN parent p on c.commonid = p.commonid
WHERE p.parentid = ...
于 2013-01-17T00:52:14.927 に答える