0

当我使用这个查询时,上面的异常已经抛出

SELECT FINQDET.InquiryNo,FINQDET.Stockcode,FINQDET.BomQty,FINQDET.Quantity,FINQDET.Rate,FINQDET.Required,FINQDET.DeliverTo,FSTCODE.TitleA AS FSTCODE_TitleA ,FSTCODE.TitleB AS FSTCODE_TitleB,FSTCODE.Size AS FSTCODE_Size,FSTCODE.Unit AS FSTCODE_Unit,                                                        FINQSUM.TITLE AS FINQSUM_TITLE,FINQSUM.DATED AS FINQSUM_DATED 

FROM FINQSUM , FINQDET  left outer join [Config]..FSTCODE   ON FINQDET.Stockcode=FSTCODE.Stockcode

WHERE  FINQDET.InquiryNo=FINQSUM.INQUIRYNO   
ORDER BY FINQDET.Stockcode,FINQDET.InquiryNo

但是如果我使用下面的查询问题解决了,

SELECT FINQDET.InquiryNo,FINQDET.Stockcode,FINQDET.BomQty,FINQDET.Quantity,FINQDET.Rate,FINQDET.Required,FINQDET.DeliverTo,FSTCODE.TitleA AS FSTCODE_TitleA ,FSTCODE.TitleB AS FSTCODE_TitleB,FSTCODE.Size AS FSTCODE_Size,FSTCODE.Unit AS FSTCODE_Unit,
FINQSUM.TITLE AS FINQSUM_TITLE,FINQSUM.DATED AS FINQSUM_DATED 

FROM FINQSUM As FINQSUM  , FINQDET  As FINQDET   left outer join [Config]..FSTCODE  As FSTCODE    ON FINQDET.Stockcode=FSTCODE.Stockcode

HERE  FINQDET.InquiryNo=FINQSUM.INQUIRYNO   
ORDER BY FINQDET.Stockcode,FINQDET.InquiryNo 

请您解释一下为什么使用别名比使用实际表名更好

4

3 回答 3

1

表 [Config]..FSTCODE 使用数据库名称进行限定,如果您使用别名,则可以正常工作。否则,您需要限定全名,因为它来自不同的数据库

于 2013-11-06T11:15:23.357 回答
0

别名允许您在不使用全名的情况下引用集合。它可以节省您的打字时间,并允许您向读者表达上下文信息。

于 2013-11-06T11:21:24.717 回答
0

看起来像是FSTCODE不同数据库中的表。在第一个查询中,虽然JOIN使用数据库名称来标识表,但ON语句没有。第二条语句通过使用ALIAS

您还可以将第一条语句修改为

left outer join [Config]..FSTCODE   
ON FINQDET.Stockcode=[Config]..FSTCODE.Stockcode
于 2013-11-06T11:17:23.817 回答