Sql server microsoft sql从多个表中选择查询

Sql server microsoft sql从多个表中选择查询,sql-server,sql-server-2008,Sql Server,Sql Server 2008,此查询在mysql中工作,但在microsoft sql server management studio 2008中不工作,有人可以帮助我吗 SELECT DISTINCT C.firstname,C.lastname,QC.category_name,QR.cid,QR.catid,QR.rhid FROM cms_question_report QR, cms_clients C, cms_questioncategory QC , cms_reporthistory RH WHER

此查询在mysql中工作,但在microsoft sql server management studio 2008中不工作,有人可以帮助我吗

SELECT DISTINCT C.firstname,C.lastname,QC.category_name,QR.cid,QR.catid,QR.rhid 
FROM cms_question_report QR, 
cms_clients C,
cms_questioncategory QC ,
cms_reporthistory RH 
WHERE C.id=QR.cid 
AND QR.rhid=RH.id 
AND QR.catid='3' 
AND QR.catid=QC.id

我收到错误:
无效的对象名cms\u question\u report

指定通常在您有特定架构但未指定它时发生,例如:

替换dbo。使用架构和/或键入数据库名称

SELECT DISTINCT C.firstname,C.lastname,QC.category_name,QR.cid,QR.catid,QR.rhid 
FROM databasename.dbo.cms_question_report QR, 
databasename.dbo.cms_clients C,
databasename.dbo.cms_questioncategory QC ,
databasename.dbo.cms_reporthistory RH 
WHERE C.id=QR.cid 
AND QR.rhid=RH.id 
AND QR.catid='3' 
AND QR.catid=QC.id

我认为这应该做

添加模式的名称(可能是dbo),并确保编辑器连接到包含这些表的数据库,而不是主数据库检查所选数据库是否正确。。!!或者在此查询之前编写Use Database。因此,请使用ANSI样式的联接……谢谢,但我正在使用其他查询,但不包括dbo,但无论如何,我尝试了您的查询,但得到了错误:
靠近“*”的语法不正确。
请重试“用数据库名称替换数据库名称”并删除“*”,这将仅在catid=3上联接。在他们的示例中,它们根据catid=3进行过滤。这是一个显著的区别。他/她只想要catid=3,但这将返回所有catid,并且只会导致catid=3的加入。无论如何,我可能会有误解,他们接受了你的答案。
SELECT DISTINCT C.firstname,C.lastname,QC.category_name,QR.cid,QR.catid,QR.rhid 
FROM cms_question_report QR
left join cms_clients C
on C.id=QR.cid 
left join cms_questioncategory QC
on QR.catid=QC.id
and QR.catid='3'
left join cms_reporthistory RH
on QR.rhid=RH.id