2012-04-25 5 views
0

クエリの作成に問題があります。複数のテーブルクエリ

は私が達成しようとしていることは、私がこれまで試してみましたすべてのヘルプやアドバイスが理解されるであろう

var house = 
    From m in db.tbl_house 
    Where m.townId == tbl_town.townId && m.Bedrooms == "3bedrooms" 
        Select m 

何次の基準

Show all records in table house where 
tbl_house.townId =tbl_town.townId 
and house.type = “3bedrooms” 

に準拠したクエリを作成している

更新

1つ、2つの不動産会社3台 不動産代理店のアカウントがあるので、不動産代理店がログオンしたときに表示したいのは 指定された住宅タイプの町の住宅です。

すべての家が持っているtownID

例:家1はtown3を= 3のtownIdとhousetype =「3bedrooms」

家2を持つことができtown3と= 3のtownIdを持つことができますhousetype =「2bedrooms」

家3はtown4とhousetype =「2bedrooms」

だから私は何をしようとしていますが3のtownIdを持つすべての住宅やhousetypeを選択している= 4のtownIdを持つことができます= "3ベッドルーム" それに関連した3の町がある不動産会社にそれらを示してください。

+0

質問は意味がありません... tbl_house.houseIdのどの価値に興味がありますか?あなたは特定の家の顧客記録、すべての家の顧客などを求めますか?それらのそれぞれは、slighlty異なるソリューションを持っています。 –

+0

質問が更新されました –

+0

正確に何が問題なのですか –

答えて

0

あなたの尋ねる内容はまだ分かりませんが、テーブルB( 'town')に一致するレコードを持つテーブルA( 'house')のすべてのレコードを求めているようです。そうでない場合は、実際には意味をなさないので、「tbl_house.townId = tbl_town.townId」の意味を説明する必要があります。

var house = from m in db.tbl_house 
      where m.townId.HasValue() && m.Bedrooms == "3bedrooms" 
      select m; 

あなたがしようとしたクエリに問題がtbl_town.townIdは意味がないということです。そのが何をしたいであれば、あなただけの外部キーフィールドに値かを持っているかどうかを確認する必要がありますどこに置くか。 tbl_townは、テーブル全体を表すオブジェクトのセットです。この場合、townIdはフィールドの定義ですが、tbl_houseエンティティセットの1つのエンティティの実際のフィールドと比較しようとしています。 2つのことは同じではなく、直接比較することはできません。 where m.Bedrooms = Stringと言ってもいいでしょう - その構文的に正しいものではありません。

EDIT:あなたが探している町の町のIDを知っているように、あなたの更新の問題により、

それはそう。その場合は、それをフィルタリングするだけです。代理店に基づいて、あなたがあなたが望むIDを知っているときに "tbl_town.townId"を使用しようとしている理由はわかりません。

ここでの構文は、関係の方向に完全に依存します。例えば、あなたがTownIdを持つ庁オブジェ​​クトを持っていると言う、あなたはちょうどその上でフィルタリングする必要がありますすることができます:

var agency = this.GetTheCurrentAgencySomehow(); 
var house = from m in db.tbl_house 
      where m.townId == agency.townId && m.Bedrooms == "3bedrooms" 
      select m; 

一方、あなたの町のオブジェクトがAgencyIdを持っている場合、あなたはおそらく、ナビゲーションを使用します本当に具体的にする方法はありません、あなたのデータモデルの実際の実装の詳細についての詳細を知らなくても

var agency = this.GetTheCurrentAgencySomehow(); 
var house = from m in db.tbl_house 
      where m.town.agencyId == agency.agencyId && m.Bedrooms == "3bedrooms" 
      select m; 

:>代理店 - >町 - プロパティは、家から取得します。

+0

私は 'tbl_town'はクラス名とエンティティセット名だと思います。私はそれがいつも起こっていることを見ています、多元化はありません:非常に混乱しています。あなたの答えでは、おそらく 'm.townId == 3 'を実行するべきですが、OPの問題は何ですか? –

関連する問題