SQL如果同时查询3个表查询语句该怎么写?

SELECT TOP 5 PE_CommonModel.*,PE_U_Article.*,PE_U_Soft.*,PE_U_Photo.* FROM PE_CommonModel,PE_U_Article,PE_U_Soft,PE_U_Photo WHERE ((PE_U_Article.FocusNews='True') OR (PE_U_Soft.FocusNews='TRUE') OR (PE_U_Photo.FocusNews='TRUE')) AND (PE_CommonModel.[Status]=99) ORDER BY PE_CommonModel.UpdateTime DESC

上面的语句我说明一下,PE_U_Article/Soft/Photo是一个CMS的3个表
我想→ 只要 Article/Soft/Photo 表下有任何一个 FocusNews为True的时候就输出,该怎么写?上面的表达方法写错了吗?

注:语法是正确的,查询器可以通过,未查询到数据,但在Article下有FocusShow为True的内容

另外,如果不同时查询3个,只查询1个,
SELECT TOP 5 PE_CommonModel.*,PE_U_Article.* FROM PE_CommonModel,PE_U_Article WHERE (PE_U_Article.FocusNews='True') AND (PE_CommonModel.[Status]=99) ORDER BY PE_CommonModel.UpdateTime DESC
可以有输出结果,希望朋友们帮帮忙解答一下.
结构是这样的CommonModel/article/soft/photo是在同一个表下的(同一个节点)article/soft/photo下都有一个FocusNews
而CommonModel下没有
我希望输出 article/soft/photo下FocusNews为True 的前5个

你的方法我去试一下,谢谢你的回答。

第一:您这是四个表,不是三个表,简化表示吧:
1.CommonModel,2.Article,3.Soft,4.Photo

第二:您没有表明三个表的关系,怎么联接呀?

第三:猜一下您的意思:大概是有三个表的结构相同(有相同的字段),
您是想要三个表中按照时间排序取每个表比较新的五条记录,
第四是个不同结构(不同字段的)的表(COMMONMODEL),但其中一个字段与另三个表的某个字段相同,可根据这个字段查出三个表中字段的类别或属性(比如更新时间),我们假设这个公共字段是NEWSID:

那么就应该是这样一个查询:

select top 5 * from article,commonModel where FocusNews='True' and CommonModel.[Status]=99 and article.newsID=COMMONMODEL.NEWSID union
select top 5 * from SOFT,commonModel where FocusNews='True' and CommonModel.[Status]=99 and SOFT.newsID=COMMONMODEL.NEWSID UNION
select top 5 * from PHOTO,commonModel where FocusNews='True' and CommonModel.[Status]=99 and PHOTO.newsID=COMMONMODEL.NEWSID ORDER BY UPDATETIME DESC
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-13
你用的AND表示要3张表都为TRUE,用OR试试