您好,第一次发帖提问,请原谅任何不当行为...... 我在大学使用ASP.NET和SQL Server进行了一项任务,我们基本上要做的是创建一个webform,我们可以通过绑定到SQL数据源的单选按钮列表选择一个政党。基于该选择,然后在下拉列表中填充MP列表,这些MP是选择了单选按钮列表的一方的一部分。然后,您可以选择一名议员并查看他或她的个人详细信息,他们在议会中的角色,并通过链接到各种SQL数据源的多个数据控件来查询/查看问题。
我正在取得良好的进展,并试图利用我能找到的任何资源来获得解决方案,但是在选择国会议员后,我已经看到议会角色了。
这里有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_1
到ROLE_4
引用ROLE.ROLE_NUM
。)
我有一个DetailsView
控件绑定到查询MP_ROLES
的SQL数据源。我基本上要做的是将ROLE_1
,ROLE_2
等中的每个值替换为ROLE_DESCRIPTION
中ROLE_NUM
引用的相应ROLE
值表格(MP_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_NUM
)。现在通过我在文本框中挖掘我知道在更简单的应用程序中你可以做我正在尝试用INNER 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年里,我一直在努力寻找解决方案,所以如果有人能够告诉我哪里出错或者可能会提供解决方案,那将非常感激:)
答案 0 :(得分: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)
答案 1 :(得分: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)