[英]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.