RKh*_*RKh 2 sql sql-server sql-server-2008
我想要三个表的结果,其中第一个表的结果是必须的.为此我使用了Left Outer Join来基于sno(主键)链接表.查询运行正常,但当我想从不同条件的第三个表中选择结果时,我有一个额外的复杂性.
在看到我如何检索结果时,问题将会清楚:
SELECT * FROM tw_main MainTable
LEFT OUTER JOIN tw_details TW
ON TW.sno = MainTable.sno
LEFT OUTER JOIN tw_typedetails CWR
ON CWR.sno = MainTable.sno WHERE CWR.twcatname = 'CWR'
LEFT OUTER JOIN tw_typedetails OHT
ON OHT.sno = MainTable.sno WHERE OHT.twcatname = 'OHT'
LEFT OUTER JOIN tw_typedetails DS
ON DS.sno = MainTable.sno WHERE DS.twcatname = 'DS'
WHERE
MainTable.sno = 420;
Run Code Online (Sandbox Code Playgroud)
如果我只使用第三个表(tw_typedetails)一次,此查询工作正常,但我想从同一个表但具有不同WHERE子句的单独结果集.
需要哪些更正?我正在使用SQL Server 2008 R2 Express.此查询应该从Crystal Reports命令运行.
你有几个where条款太多了.
请尝试使用and.
SELECT * FROM tw_main MainTable
LEFT OUTER JOIN tw_details TW
ON TW.sno = MainTable.sno
LEFT OUTER JOIN tw_typedetails CWR
ON CWR.sno = MainTable.sno AND CWR.twcatname = 'CWR'
LEFT OUTER JOIN tw_typedetails OHT
ON OHT.sno = MainTable.sno AND OHT.twcatname = 'OHT'
LEFT OUTER JOIN tw_typedetails DS
ON DS.sno = MainTable.sno AND DS.twcatname = 'DS'
WHERE
MainTable.sno = 420;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6415 次 |
| 最近记录: |