[英]SQL QUERY: Joining of two tables
I have a problem in getting the correct data... 我在获取正确的数据时遇到问题...
I have two tables, tblbuilding and tbldata. 我有两个表, tblbuilding和tbldata。
Here's my tblbuilding : 这是我的建筑 :
Here's my tbldata : 这是我的tbldata :
my query: 我的查询:
My fldWeek here is "Week 3": 我的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
The result of the query above is: 上面查询的结果是:
Which is correct.... 哪个是对的....
but when I changed the fldWeek to "Week 2" 但是当我将fldWeek更改为“第2周”时
the result is: 结果是:
The correct result should be...."assuming that I have only two NOT NULL in WEEK 2" 正确的结果应该是...。“假设我在第2周中只有两个NOT NULL”
Thanks.... 谢谢....
I think you don't need to get the cartesian product. 我认为您不需要获取笛卡尔积。
Try this using LEFT JOIN
only. 仅使用
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.