从两个查询中检索聚合结果


Retrieving aggregated results from two queries

我正试图找出比较2个查询结果并显示差异的最佳方法。

  • 表1 =用户表
  • 表2 = Page Table
  • 表3 =分配表

的例子:用户表中存在用户1用户2用户1已分配给10个页面,用户2仅分配给1个页面。

这可以很好地查找他们分配了哪些页面,在本例中只有1页。

SELECT * FROM assigned_table WHERE user= 2

但是我不知道如何获得它没有访问的所有其他页面的结果。

这不起作用,因为用户1可以访问所有10个用户,所以它会获得除user2

之外的所有其他用户的结果
SELECT * FROM assigned_table WHERE user != 2

我需要它显示user2可以访问哪些页面,哪些页面不能访问并分别显示两个结果

如有任何帮助,不胜感激。

抱歉,如果类似的主题张贴在其他地方,是无法找到我正在寻找的。

您应该使用join。这是关于这个的文档https://dev.mysql.com/doc/refman/5.0/en/join.html。

之类的
select pt.pagename from `Assigned table` as at
join `Page Table` as pt
on at.pageid = pt.id
where at.user = 2

这将为您提供用户2分配给他/她的所有页面标题(pagename)的列表。您的列名和表名需要更新。

取出所有未分配给特定用户的文件。

select pagename 
from `Page Table` 
where id not in (select pageid from `Assigned table` where at.user = 2)