使用mysql查询检查空结果

时间:2017-06-02 07:36:06

标签: mysql sql

首先,对不起标题,但我真的不知道怎么说。 我有3个表用于存储部分,页面和读取。

表格是......

部分

idsection
sectiontitle

网页

idpage
pagetitle
idsection

读取

idread
idpage
time

我有一个简单的查询来列出sections喜欢 -

SELECT * FROM sections WHERE 1;

但是我需要显示section是否完全read,这意味着所有 pages具有相同的idsection read { {1}}。我能想象的唯一方法是复杂的查询,使用php for脚本会更简单。

2 个答案:

答案 0 :(得分:0)

这应该有效,但它正在使用group by,所以你必须添加你想要从组中的section表中选择的每个项目。

  SELECT        dbo.sections.idsection, dbo.sections.sectiontitle, CASE WHEN SUM(dbo.[read].idread) IS NULL THEN 0 ELSE 1 END AS AllRead
    FROM            dbo.page INNER JOIN
                             dbo.sections ON dbo.page.idsection = dbo.sections.idsection LEFT OUTER JOIN
                             dbo.[read] ON dbo.page.idpage = dbo.[read].idpage
    GROUP BY dbo.sections.idsection, dbo.sections.sectiontitle

答案 1 :(得分:0)

试试以下内容:

select * from section s where idsection not in (select page.idsection from 
page where 
page.idsection=s.idsection and idpage not in (select idpage from read));

我不使用,因为你需要检查所有页面而不是页面中的1个。 因此,我们应该获取未读取(未读)并且不在其中的页面。

如果你有1个部分有5个页面并且所有部分都已被阅读,它会在子查询上给你空结果,让你的主查询选择会话。

如果你有1个部分,其中有10个页面只能读取9个页面,那么它将在子查询中给出u页面10,并使主要查询中的部分为空(不在)中。