0

バックグラウンド:

こんにちは、初めて質問を投稿するので、不正行為をお許しください... 私は大学で ASP.NET と SQL Server を使用する課題を与えられました。基本的にしなければならないことは、政党を選択できる Web フォームをSQL データ ソースにバインドされたラジオ ボタン リスト。この選択に基づいて、ドロップダウン リストには、ラジオ ボタン リストで選択された当事者の一部である MP のリストが取り込まれます。次に MP を選択し、その個人の詳細、議会での役割を表示し、さまざまな SQL データ ソースにリンクされた多数のデータ コントロールを介して質問を表示することができます。

私は順調に進んでおり、解決策を得るために見つけることができるあらゆるリソースを使用しようとしていますが、残念ながら、MP を選択した後、議会の役割を表示する際に壁にぶつかりました。

ここに関係する 3 つのテーブルがあります。

MP                   MP_ROLES               ROLE
-------------        ---------------        ----------------
MP_NUM (PK)          MP_NUM (PK, FK)        ROLE_NUM (PK)
MP_FIRST             ROLE_1 (FK)            ROLE_DESCRIPTION
MP_LAST              ROLE_2 (FK)
MP_EMAIL             ROLE_3 (FK)
MP_CONTACTADD        ROLE_4 (FK)
MP_PHOTO
PARTY_NUM(FK)

(どこROLE_1ROLE_4参照してくださいROLE.ROLE_NUM。)

問題:

DetailsViewクエリを実行する SQL データ ソースにバインドされたコントロールがありますMP_ROLES。私が基本的にやろうとしているのはROLE_1、 、 などの各値を、表で参照されROLE_2ている対応する値に置き換えることです( as )。テキストボックスを掘り下げてみると、より単純なアプリケーションで関数を使ってやろうとしていることを実行できることがわかりましたが、まだ学習しているため、やりたいことを実行するために構文を並べ替えることができませんでした。ROLE_DESCRIPTIONROLE_NUMROLEMP_ROLE.ROLE_1 = ROLE.ROLE_NUM AND MP_ROLE.ROLE_2 = ROLE.ROLE_NUM AND MP_ROLE.ROLE_3 = ROLE.ROLE_NUM AND MP_ROLE.ROLE_4 = ROLE.ROLE_NUMINNER JOIN

私がこれまでに持っているもの:

SELECT MP_ROLES.MP_NUM, MP_ROLES.ROLE_1, MP_ROLES.ROLE_2, MP_ROLES.ROLE_3, MP_ROLES.ROLE_4
FROM MP_ROLES 
INNER JOIN ROLE ON MP_ROLES.ROLE_1 = ROLE.ROLE_NUM 
INNER JOIN ROLE AS ROLE_3 ON MP_ROLES.ROLE_2 = ROLE.ROLE_NUM 
INNER JOIN ROLE AS ROLE_2 ON MP_ROLES.ROLE_3 = ROLE.ROLE_NUM 
INNER JOIN ROLE AS ROLE_1 ON MP_ROLES.ROLE_4 = ROLE.ROLE_NUM 
WHERE (MP_ROLES.MP_NUM = @MP_NUM)

私は解決策を見つけようとして過去8年間これに夢中になっていたので、私が間違っている場所を教えてくれる人、または解決策を提供するのに十分親切な人がいるなら、それは非常に高く評価されます:)

4

2 に答える 2

0

問題は = ROLE.ROLE_NUM にあります。ここでもエイリアスを指定する必要があります。また、あなたの番号がすべて混同されていたので、いくつかの番号を再配置しました。

SELECT MP_ROLES.MP_NUM
, MP_ROLES.ROLE_1
, MP_ROLES.ROLE_2
, MP_ROLES.ROLE_3
, MP_ROLES.ROLE_4 

FROM MP_ROLES

INNER JOIN ROLE AS ROLE_1 ON MP_ROLES.ROLE_1 = ROLE_1.ROLE_NUM
INNER JOIN ROLE AS ROLE_2 ON MP_ROLES.ROLE_2 = ROLE_2.ROLE_NUM
INNER JOIN ROLE AS ROLE_3 ON MP_ROLES.ROLE_3 = ROLE_3.ROLE_NUM
INNER JOIN ROLE AS ROLE_4 ON MP_ROLES.ROLE_4 = ROLE_4.ROLE_NUM

WHERE (MP_ROLES.MP_NUM = @MP_NUM)
于 2013-10-25T07:23:52.563 に答える
0

私が実際に目指していたことが、LEFT OUTER JOIN 関数を使用して実行できるように見えます。

SELECT 
MP_ROLES.MP_NUM, 
MP_ROLES.ROLE_1, 
MP_ROLES.ROLE_2, 
MP_ROLES.ROLE_3, 
MP_ROLES.ROLE_4, 
ROLE1.ROLE_NUM, ROLE1.ROLE_DESCRIPTION AS POSITION1, 
ROLE2.ROLE_NUM, ROLE2.ROLE_DESCRIPTION AS POSITION2, 
ROLE3.ROLE_NUM, ROLE3.ROLE_DESCRIPTION AS POSITION3, 
ROLE4.ROLE_NUM, ROLE4.ROLE_DESCRIPTION AS POSITION4 

FROM MP_ROLES 
LEFT OUTER JOIN ROLE AS ROLE1 ON MP_ROLES.ROLE_1 = ROLE1.ROLE_NUM 
LEFT OUTER JOIN ROLE AS ROLE2 ON MP_ROLES.ROLE_2 = ROLE1.ROLE_NUM 
LEFT OUTER JOIN ROLE AS ROLE3 ON MP_ROLES.ROLE_3 = ROLE1.ROLE_NUM 
LEFT OUTER JOIN ROLE AS ROLE4 ON MP_ROLES.ROLE_4 = ROLE1.ROLE_NUM 

WHERE (MP_ROLES.MP_NUM = @MP_NUM)
于 2013-10-27T06:08:10.807 に答える