Php 从具有特定id的多个表中选择数据

Php 从具有特定id的多个表中选择数据,php,mysql,sql,sql-server,database,Php,Mysql,Sql,Sql Server,Database,我有三个表,用户,博客和状态。 下面是我的示例数据库 用户是存储用户ID和其他用户信息的主表。我希望当我从table user中搜索时,查询也应该从其他两个具有特定用户ID的表中获取数据。但是只有一行来自博客,它具有最大的视图,如果一个博客具有相同的视图,那么哪一行应该具有最大的bogId。和按视图排序desc,如果没有具有该用户id的博客,则应按状态id排序 结果如我所愿,但有人能简化这个查询吗。 对不起,英语不好。这是你想要的吗 SELECT * FROM user u LEFT JOIN

我有三个表,用户,博客和状态。 下面是我的示例数据库

用户是存储用户ID和其他用户信息的主表。我希望当我从table user中搜索时,查询也应该从其他两个具有特定用户ID的表中获取数据。但是只有一行来自博客,它具有最大的视图,如果一个博客具有相同的视图,那么哪一行应该具有最大的bogId。和按视图排序desc,如果没有具有该用户id的博客,则应按状态id排序

结果如我所愿,但有人能简化这个查询吗。
对不起,英语不好。

这是你想要的吗

SELECT * 
FROM user u
LEFT JOIN blog b ON u.userId = b.userId
LEFT JOIN status s ON u.userId = s.userId
WHERE MATCH(u.firstName, u.lastName, u.userName) AGAINST('harry')
GROUP BY u.userId
ORDER BY b.views

每个用户是否有多个状态行?总是至少有一个吗?如果有多个,您想要哪一个?还是全部?您实际希望返回blog和status中的哪些列?此查询比需要的更复杂。例如,可以将WHERE简化为不使用中的子查询,因为您已经有用户表数据。我相信可以简化更多。最好在SQLFIDLE中设置示例数据,并询问您希望看到的结果: