php,来自两个表的MySql子查询

时间:2016-02-11 23:27:26

标签: php mysql

我尝试构建MySql查询以根据以下内容生成结果:

 Table Permissions

user_id     blog_id
=========================
1           1
1           2
1           3
2           2
3           1


Table Blog

id        name
=========================
1         First Blog
2         Second Blog
3         Third Blog
4         Fourth Blog

我需要从Blog表中选择所有记录,并根据登录的用户ID显示它,如:

$user_id = $_SESSION['user_id];

表权限包含允许查看博客表结果的每个用户的访问权限。

类似于:

"SELECT * FROM Blog WHERE id IN()"

但我不确定如何访问权限表以在IN()中使用它。

因此,例如,如果ID为1的用户已登录,则此用户应该能够看到匹配ID为1,2和3的博客。

2 个答案:

答案 0 :(得分:1)

您可以使用join或in()子查询。

select b.* from blogs b
inner join permissions p
on b.id=p.blog_id
where p.user_id=...

答案 1 :(得分:0)

试试这个:

SELECT * FROM Blog INNER JOIN Permissions ON Permissions.blog_id = Blog.id

显示所有用户。

此处的工作代码:http://sqlfiddle.com/#!9/aa3e9/14

您可以使用:

SELECT * FROM Blog INNER JOIN Permissions ON Permissions.blog_id = Blog.id 
WHERE Permissions.user_id = 'user_id number'

获取特定用户。