Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不能在T-SQL联接中绑定我的字段?_Sql_Sql Server_Tsql - Fatal编程技术网

为什么不能在T-SQL联接中绑定我的字段?

为什么不能在T-SQL联接中绑定我的字段?,sql,sql-server,tsql,Sql,Sql Server,Tsql,因此,我有以下SQL语句: SELECT CASE WHEN table1.Recommendation = 1 THEN 'Condition1' WHEN table1.Recommendation = 2 THEN 'Condition2' WHEN table1.Recommendation = 3 THEN 'Condition3' ELSE ' ' END AS Recommendation, table2.Notes,

因此,我有以下SQL语句:

SELECT
    CASE
    WHEN table1.Recommendation = 1 THEN 'Condition1'
    WHEN table1.Recommendation = 2 THEN 'Condition2'
    WHEN table1.Recommendation = 3 THEN 'Condition3'
    ELSE ' '
    END
    AS Recommendation,
    table2.Notes,
    table3.ItemDescription AS Item,
    table4.Description AS Concern
FROM Job
RIGHT JOIN table2 ON Job.JobId = table2.JobId
LEFT JOIN table1 ON table2.table2Id = table1.table2Id
INNER JOIN table3 ON table2.table3Id = table3.table3Id
LEFT JOIN table1 customName ON table4.table4Id = customName.table4Id
WHERE Job.JobId = @JobId AND table1.Condition = 3

这是用于telerik报告的,
JobId
变量将与实际的作业id一起输入。
table2
保存
JobId
,以及
table1
id。我正试图获取
table4.Description
,但每次我都得到错误:

The multi-part identifier table4.table4Id could not be bound. 
The multi-part identifier table4.Description could not be bound.


在这一点上,我不知道从这里尝试什么。任何帮助都将不胜感激!我将很乐意添加更多信息,尽可能解决这个问题

您没有使用任何别名
表4
;因此,编译器会给出错误。

基本上,您缺少一个
连接。您只需添加联接条件

SELECT
    CASE
    WHEN table1.Recommendation = 1 THEN 'Condition1'
    WHEN table1.Recommendation = 2 THEN 'Condition2'
    WHEN table1.Recommendation = 3 THEN 'Condition3'
    ELSE ' '
    END
    AS Recommendation,
    table2.Notes,
    table3.ItemDescription AS Item,
    table4.Description AS Concern
FROM Job
RIGHT JOIN table2 ON Job.JobId = table2.JobId
LEFT JOIN table1 ON table2.table2Id = table1.table2Id
INNER JOIN table3 ON table2.table3Id = table3.table3Id
INNER JOIN table4 ON <I don't what what to join on>
LEFT JOIN table1 customName ON table4.table4Id = customName.table4Id
WHERE Job.JobId = @JobId AND table1.Condition = 3
选择
案例
当table1.Recommension=1时,则为“条件1”
当表1.建议=2时,则为“条件2”
当表1.建议=3时,则为“条件3”
否则“
结束
作为建议,
表2.注释,
表3.1项目说明作为项目,
表4.作为关注点的说明
从工作
右键联接Job.JobId=table2.JobId上的表2
左连接table2上的table1.table2Id=table1.table2Id
table2.table3Id=table3.table3Id上的内部联接table3

查看前面的答案和对话后,我认为最好的解决方案是翻转连接

SELECT
    CASE
    WHEN table1.Recommendation = 1 THEN 'Condition1'
    WHEN table1.Recommendation = 2 THEN 'Condition2'
    WHEN table1.Recommendation = 3 THEN 'Condition3'
    ELSE ' '
    END
    AS Recommendation,
    table2.Notes,
    table3.ItemDescription AS Item,
    table4.Description AS Concern
FROM Job
RIGHT JOIN table2 ON Job.JobId = table2.JobId
LEFT JOIN table1 ON table2.table2Id = table1.table2Id
INNER JOIN table3 ON table2.table3Id = table3.table3Id
RIGHT JOIN table4 ON table1.table4Id = table4.table4Id
WHERE Job.JobId = @JobId AND table1.Condition = 3

您的表
table4
reall是否有一个名为
table4id
的列?错误表明它不是。还有
左连接表1客户名称
?你为什么不先调用
表1
customName
呢?@Larnu是的,它确实有这个列。我必须使用
customName
(不是它的实际名称),因为我收到一个错误,说我需要在
table1
的第二个连接上使用相关名称,我没有看到任何
join
table4
。你希望如何获得
table4。如果它不是
JOIN
table???@Eric table4是最后一次JOIN的一部分。不,我没有看到它。我看到的唯一表格是
Job
table2
table3
customName
。盟友是什么?我被你的回答搞糊涂了,我该如何在那句话中使用别名?嗨,我的意思是你在上面的查询中缺少了表4,只需在查询中将表4更改为表2,就可以在表2中加入表1 customName。表2ID=customName。表2I在我的查询中有表4。我使用的是相关名称,因此
customName
table4
相同,但您没有提到table4中的任何连接。如果你想使用表4作为表,那么你必须与其他表连接。我看不出这与我所做的有什么不同,除了添加“内部连接表4”当然有区别。在您的例子中,您尝试获取一个甚至不存在的列。如何获取不在结果集中的表的列?在我的查询中,
table4
是结果集的一部分,因此您可以获得列
table4。Description
table4
显然是我的结果集的一部分:
LEFT JOIN table1 customName ON table4.table4Id=customName.table4Id
。除非我遗漏了什么,否则我认为这意味着表4是我结果的一部分。这是我最后一次说。我显然没有在您的结果集中看到
表4
。使用适当的表名,如Order、OrderDetail、Item,将比表1、表2更好。回到我的第一个问题,
table4
来自哪里???它不在您的
FROM
JOIN
中。它只是神奇地出现了。