我有两张桌子,其中一张是裁判
听说我有三列 j1 , j2 , j3 (每个都有一个来自jcode的值)
在判断中我有 jcode 和 jname 。
我希望在3个不同的下拉列表中显示jname,具体取决于 j1 , j2 , j3 。
我如何构建我的SQL查询。
答案 0 :(得分:0)
我不确定我理解你的问题,因为架构似乎很奇怪。
然而,听起来你想得到:
要做到这一点,您的疑问可能是:
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
,为什么会有j3
和j2
列?通过提出的设计,您可以解决这个问题。
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