C# 左外部联接代码的列名称不明确
我在表单上有一个datagridview来显示处方表数据。我想将处方表中的paymentID字段更改为付款表中存在的金额字段。但是在我的select语句中编写了左外连接代码之后,当我调试时,在第二个图像中出现了错误 付款和处方表 不明确的列名C# 左外部联接代码的列名称不明确,c#,sql,forms,datagridview,inner-join,C#,Sql,Forms,Datagridview,Inner Join,我在表单上有一个datagridview来显示处方表数据。我想将处方表中的paymentID字段更改为付款表中存在的金额字段。但是在我的select语句中编写了左外连接代码之后,当我调试时,在第二个图像中出现了错误 付款和处方表 不明确的列名 查询应如下所示: string strCommandText = "SELECT prescriptionID, medicationID, a.appointmentID, c.amount FRO
查询应如下所示:
string strCommandText = "SELECT prescriptionID, medicationID, a.appointmentID,
c.amount FROM PRESCRIPTION AS a
left outer join payment as c
on a.paymentid = c.paymentId";
由于两个表中都存在
AppointId
,因此您需要通过将AppointId
替换为a来解决歧义。AppointId
查询应如下所示:
string strCommandText = "SELECT prescriptionID, medicationID, a.appointmentID,
c.amount FROM PRESCRIPTION AS a
left outer join payment as c
on a.paymentid = c.paymentId";
由于两个表中都存在
appointmentID
,因此需要通过将appointmentID
替换为a.appointmentID来解决歧义,在联接操作中始终尝试使用表名别名:
Select ... From Table1 t1
LEFT JOIN table2 t2
on t1.Key = t2.FKey
在两个表中都可以找到该名称,请始终尝试在联接操作中为表名称使用别名:
Select ... From Table1 t1
LEFT JOIN table2 t2
on t1.Key = t2.FKey
由于不止一个表包含appointmentID
列,因此需要指定要在select语句中获取的列
select ... a.appointmentID
或
如果两个表都包含相同的appointmentID
值,则选择哪一个并不重要。由于您离开了外部联接,这意味着支付条目不必存在,当c.AppointId
为空时,您可能会发现a.AppointId
包含一些值,因为不止一个表包含AppointId
列,您需要在select语句中指定要获取的列
select ... a.appointmentID
或
如果两个表都包含相同的appointmentID
值,则选择哪一个并不重要。由于您离开了外部联接,这意味着支付条目不必存在,当c.AppointId
为空时,您可能会发现a.AppointId
包含一些值c.AppointId
您有两个表a作为处方和c作为付款,因为两者都包含AppointId
列,您需要指定要从中获取AppointId
的表的别名。如果两个表都包含相同的appointmentID
值,那么这并不重要,但因为您需要离开外部联接而不是内部联接,所以c不必存在,您需要决定使用哪个值感谢我的理解,这意味着,如果我将a.appointmentID设置为Yes,您需要指定要选择的表,您有两个表a为处方,c为付款,因为两者都包含AppointId
列,您需要指定要从中获取appointmentID
的表的别名。如果两个表都包含相同的appointmentID
值,那么这并不重要,但因为您需要离开外部联接而不是内部联接,所以c可能不存在,您需要决定采用哪个值。我知道,这意味着如果我将a.AppointId设置为“是”,您需要指定要选择的表