- - PR -
親IDを指定したとき、子IDと関連するすべてのデータを取得したい。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-11-01 14:15
はじめまして。めっちといいます。
どういったLINQ式を組み立てたらよいか教示していただきたく書き込みしました。 よろしくお願いします。 ■分類テーブル■ |分類ID|親ID|分類名 1 NULL キーボード 2 NULL マウス 3 1 有線式 4 1 無線式 5 4 電池式 6 4 充電式 7 2 レーザー式 8 2 ボール式 ※一応最大5階層まで。 ■商品テーブル■ |商品ID|商品名 1 Aキーボード 2 Bキーボード 3 Cキーボード 4 Dマウス ■商品・分類関連づけテーブル■ さらに、一つの商品が複数のカテゴリに該当することもあるので、リンクテーブルを作っています。有線式かつ無線式のキーボードは実際はないかもしれませんが。。。 |商品ID|分類ID 1(A) 3(有線式) 1(A) 5(無線式で電池式) 3(C) 6(無線式で充電式) 4(D) 7(レーザー式) ■質問■ このようなテーブルで、たとえば分類IDの1(キーボード)を指定した場合に、その小分類である有線式キーボードと無線式(電池式・充電式)キーボードの商品(AとC)を取り出したいのですが、どのようなLINQ式を組み立てたらよいのでしょうか。 また、そもそもこのようなテーブルの作り方が誤っているようでしたらご指摘下さればと思います。 ■環境■ WindowsXP SP3 .NET Framework3.5 VisualStudio2008 Pro | ||||
|
投稿日時: 2008-11-14 10:50
分類が5階層までと決まっているなら、分類テーブルを
| 分類ID | 分類名 | という風に簡単にして、 分類1〜5それぞれに1つずつテーブルを用意し、 商品テーブルを | 商品ID | 商品名 | 分類1ID | 分類2ID | 分類3ID | 分類4ID | 分類5ID | としてもいいのでは? 「有線式」と「無線式で電池式」のキーボードは違う製品になる思います。 あと、参考までにめっちさんが挙げた例をそのまま LINQ にすると
になりますが、分類テーブル同士を結合する回数は固定ではないので、 そのまま利用できませんね。 _________________ Nakamura Blog [ メッセージ編集済み 編集者: なかむら 編集日時 2008-11-14 10:51 ] [ メッセージ編集済み 編集者: なかむら 編集日時 2008-11-14 11:34 ] |
1