SQL查询加入两个表的帮助

时间:2010-11-18 06:24:40

标签: c# sql

我有两张桌子,其中一张是裁判

听说我有三列 j1 j2 j3 (每个都有一个来自jcode的值)

在判断中我有 jcode jname

我希望在3个不同的下拉列表中显示jname,具体取决于 j1 j2 j3

我如何构建我的SQL查询。

2 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题,因为架构似乎很奇怪。

然而,听起来你想得到:

  • Dropdown1:显示jcode所在的jname 在听说过的j1单元格中
  • Dropdown2: 显示jcode,其中jcode位于j2中 听到的声音
  • Dropdown3:显示 jname,其中jcode位于j3单元格中 heardt

要做到这一点,您的疑问可能是:

select jname, jcode
from heardt
inner join jud ON heardt.j1 = jcode

select jname, jcode
from heardt
inner join jud ON heardt.j2 = jcode

select jname, jcode
from heardt
inner join jud ON heardt.j3 = jcode

您可能感兴趣的替代方案是,如果您想要获取每个heardt行以及与之匹配的三个jnames,您可以这样做:

select jud1.jname as jname1, jud2.jname as jname2, jud3.jname as jname3
from heardt
left join jud as jud1 on jud1.jcode = heardt.j1
left join jud as jud2 on jud2.jcode = heardt.j2
left join jud as jud3 on jud3.jcode = heardt.j3

然而,更好的解决方案是制作这样的表格(选择更好的命名):

jud table
---------
jcode
jname

heardt table
------------
unsure on the purpose of this table

dropdown table (name this after whatever your dropdowns represent, maybe this is heardt)
----------
dropdownId

dropdownjuds table
-------------
dropdownId
jcode

通过这种方式,您可以执行如下所示的查询,并且每个下拉列表不存储列。例如,如果您以后突然需要j4该怎么办 - 使用此方法您只需向dropdown表添加新的dropdownjuds和相关条目即可。如果下拉数字不均匀怎么办?您目前使用的是null,但如果行只有j1,为什么会有j3j2列?通过提出的设计,您可以解决这个问题。

select jname 
from dropdownjuds ddj
inner join jud on ddj.jcode = jud.jcode
where dropdownId = *

其中*为dropdown1为1,dropdown2为2等。

答案 1 :(得分:0)

如果您详细说明要求(在表格中提供一些数据并根据相同的数据显示您的预期输出),这将有所帮助。

如果您希望查询获取一组输入(j1,j2,j3)的名称,那么在这种情况下,您必须有内部查询或多个连接。

select h.j1, hj1.jname, hj1.jcode, h.j2, hj2.jname, hj2.jcode, h.j3, hj3.jname, hj3.jcode
from heardt as h
inner join jud as hj1 ON h.j1 = hj1.jcode
inner join jud as hj2 ON h.j2 = hj2.jcode
inner join jud as hj3 ON h.j3 = hj3.jcode
where h.j1=@myj1 and h.j2=@myj2 and h.j3=@myj3