首先,对不起标题,但我真的不知道怎么说。 我有3个表用于存储部分,页面和读取。
表格是......
部分
idsection
sectiontitle
网页
idpage
pagetitle
idsection
读取
idread
idpage
time
我有一个简单的查询来列出sections
喜欢 -
SELECT * FROM sections WHERE 1;
但是我需要显示section
是否完全read
,这意味着所有 pages
具有相同的idsection
read
{ {1}}。我能想象的唯一方法是复杂的查询,使用php for
脚本会更简单。
答案 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,并使主要查询中的部分为空(不在)中。