Wes*_*ley 21 sql-server join sql-server-ce
我有两张桌子.indRailType包含与我在其他表中使用的ID值配对的名称列表,以指示导轨类型.WO_BreakerRail包含日期列和轨道代码列,对应于相同的代码indRailType和其他一些数据.WO_BreakerRail对于每个日期,每种铁路类型的任何活动都有一排.所以我可以有3行日期3/19/2010,每行表示不同的轨道代码,以及发生了什么.
当我使用以下内容时LEFT OUTER JOIN,我得到一个包含所有类型轨道的表,在19行中没有任何事情发生的行中有空值.现在,这只是起作用,因为我现在只有一个日期表示在我的WO_BreakerRail表中,即19日.当我添加更多具有不同日期的行时,事情会变得混乱.
这是我的SQL语句,它现在给出了我想要的结果:
SELECT WO_BreakerRail.ID, indRailType.RailType, WO_BreakerRail.CreatedPieces, 
    WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged, 
    WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop
FROM indRailType
LEFT OUTER JOIN WO_BreakerRail 
    ON indRailType.RailCode = WO_BreakerRail.RailCode
现在,当我添加一个WHERE WO_BreakerRail.Date = @Date子句时,我会丢失所有JOIN没有发生的行.我不希望这样.从阅读起,听起来像是OUTER JOIN我想要的全部,但SQL Server Compact Edition不支持FULL OUTER JOINs.有没有办法解决这个问题,还是我正在寻找其他的东西?
Phi*_*rie 40
尝试:
SELECT WO_BreakerRail.ID, indRailType.RailType, WO_BreakerRail.CreatedPieces, 
    WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged,
    WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop
FROM indRailType
LEFT OUTER JOIN WO_BreakerRail ON indRailType.RailCode = WO_BreakerRail.RailCode 
            AND WO_BreakerRail.Date = @Date
因此添加AND WO_BreakerRail.Date = @Date到连接上
Cha*_*ana 15
谓词条件需要On在join 的子句中,而不是在where子句中.外部连接工作的方式是,在分析连接条件之后,"内侧"与内侧不匹配的所有行都被添加回来......但这一切都发生在处理where子句之前.因此,如果where子句谓词从外连接的外侧过滤属性,则所有这些行将再次被删除...(它们都是空的).将谓词放在连接条件中,然后在将缺少的行添加回来之前对其进行评估...
SELECT b.ID, t.RailType, b.CreatedPieces, 
       b.OutsideSource, b.Charged, b.Rejected, 
       b.RejectedToCrop 
FROM indRailType t
   LEFT JOIN WO_BreakerRail b
        ON t.RailCode = b.RailCode 
            And b.Date = @Date
你可以使用这个where子句:
WHERE WO_BreakerRail.Date = @Date OR WO_BreakerRail.Date IS NULL
| 归档时间: | 
 | 
| 查看次数: | 79440 次 | 
| 最近记录: |