繁体   English   中英

SQL查询:连接两个表

[英]SQL QUERY: Joining of two tables

我在获取正确的数据时遇到问题...

我有两个表, tblbuilding和tbldata。

这是我的建筑

在此处输入图片说明

这是我的tbldata

在此处输入图片说明

我的查询:

我的fldWeek是“第3周”:

SELECT tblbuilding.fldBldgName
      ,tblbuilding.fldNetname
      ,MAX(tbldata.fldDuration) AS fldDuration
      ,tbldata.fldWeek
      ,tbldata.fldYear
FROM tblbuilding AS tblbuilding_1 
    LEFT OUTER JOIN tbldata ON tblbuilding_1.fldBldgName = tbldata.fldBldgName 
    CROSS JOIN tblbuilding
WHERE (tblbuilding.fldNetname = 'LRT - 2') 
    AND (tbldata.fldWeek = 'Week 3' OR tbldata.fldWeek IS NULL)
    AND (tbldata.fldYear = '2013' OR tbldata.fldYear IS NULL)
GROUP BY tbldata.fldWeek
        ,tblbuilding.fldBldgName
        ,tblbuilding.fldNetname
        ,tbldata.fldYear
ORDER BY tblbuilding.fldBldgName

上面查询的结果是:

在此处输入图片说明

哪个是对的....

但是当我将fldWeek更改为“第2周”时

结果是:

在此处输入图片说明

正确的结果应该是...。“假设我在第2周中只有两个NOT NULL”

在此处输入图片说明

谢谢....

我认为您不需要获取笛卡尔积。

仅使用LEFT JOIN尝试此操作。

SELECT  a.ID,
        a.fldBldgName,
        b.fldDuration,
        b.fldWeek,
        b.fldYear
FROM    tblBuilding a
        LEFT JOIN tblData b
            ON  a.fldBldgName = b.fldBldgName
                AND b.fldWeek = 'Week 3'
                AND b.fldYear = '2013'
WHERE   a.fldNetname = 'LRT - 2' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM