我正在尝试从不同的表中获取数据。 下面是表结构和值以及我到目前为止所尝试的内容。
uploadtable
uploadId doctypeId
1 1
2 1
MetadataTable
Id doctypeId contentLable controlType fieldtype
1 1 docnumber Textbox varchar
2 1 expiryDate Textbox Datetime
contentTable
Id uploadId doctypeId Label Value
1 1 1 docnumber 123
2 1 1 expiryDate 1/1/2016
当我将uploadId
作为1传递给where条件时,Output应为
uploadId contentLable controlType fieldtype Label Value
1 docnumber Textbox varchar docnumber 123
1 expiryDate Textbox Datetime expiryDate 1/1/2016
实际上我在我的sql server中试过如下。其实我需要linq查询。如果我在sql中得到正确的输出,那么我想把它转换成linq。
select
upd.uploadId,
meta.contentLable,
meta.controlType,
meta.fieldtype,
content.Label,
content.value
from MetadataTable meta,
contentTable content,
uploadtable upd
where upd.uploadId = content.uploadId
and meta.doctypeId = content.doctypeId
and upd.uploadId = 1
我输出的输出不正确如下。
uploadId contentLable controlType fieldtype Label Value
1 docnumber Textbox varchar docnumber 123
1 docnumber Textbox varchar expiryDate 1/1/2016
1 expiryDate Textbox Datetime docnumber 123
1 expiryDate Textbox Datetime expiryDate 1/1/2016
答案 0 :(得分:0)
希望这会有所帮助。我认为这个sql应该执行你需要的东西:
join
contentTable
从多个表中进行选择 - 使用恰当的uploadId
语法 - 它会使您的查询更具可读性并减少忘记加入条件的机会。doctypeId
时,您还需要Cartesian join
和cross join
加入 - 否则您会得到像您这样的<ul class="et_pb_tabs_controls clearfix">
<li class="et_pb_tab_0"><a href="#">Sat 1st Service</a></li>
<li class="et_pb_tab_1"><a href="#">Sat 2nd Service</a></li>
<li class="et_pb_tab_2"><a href="#"></a></li>
<li class="et_pb_tab_3"><a href="#">Sun 2nd Service</a></li>
<li class="et_pb_tab_4"><a href="#"></a></li>
<li class="et_pb_tab_5"><a href="#">test</a></li>
</ul>
/ stream
没有。